facebook第三方登陆服务器验证



    private final Logger log = LoggerFactory.getLogger(this.getClass());
    //验证口令
    private static String verify_url = "https://graph.facebook.com/debug_token";
    //获取应用口令
    private static String app_url = "https://graph.facebook.com/v2.8/oauth/access_token";
    private static final long appTokenExpired = 2 * 60 * 60;

    @Value("${app.facebook.login.client-id}")
    private String clientId;
    @Value("${app.facebook.login.client-secret}")
    private String clientSecret;
    @Autowired
    private RedisCache redisCache;



    @Autowired
    private AccountManager accountManager;
    @Autowired
    private UserForbiddenManager userForbiddenManager;
    @Autowired
    private SmsService smsService;

    @Override
    public AccountThirdBO process(LoginRequest req) {


        if (StringUtils.isEmpty(req.getAccessToken())) {
            throw new BusinessException(ResultEnum.PARA_ERR);
        }
        String provider = AccountConstant.ProviderEnum.facebook.toString();
        String thirdId = getFacebookUnionId(req.getAccessToken());

        AccountIndex accountIndex = accountManager.getAccountIndex(provider, thirdId);
        boolean unregistered = accountIndex == null;
        if (!unregistered) {
            accountManager.checkPhoneValidation(accountIndex.getUid());
        }

        List<ThirdInfo> thirdInfoList = new ArrayList<>();
        thirdInfoList.add(new ThirdInfo(provider, thirdId, thirdId, ""));

        return new AccountThirdBO(thirdInfoList,
                accountIndex == null ? null : accountIndex.getUid(),
                unregistered,
                false,
                unregistered);
    }


    private String getFacebookUnionId(String accessToken) {
        HashMap<String, String> params = new HashMap<String, String>();
        //应用口令
        String access_token = getAppToken();
        params.put("input_token", accessToken);
        params.put("access_token", access_token);
        String data = null;
        String result = HttpInvokeUtil.httpGet(verify_url, params);
        log.info("getFacebookUnionId result:{}", result);
        JSONObject jsonObject = JSON.parseObject(result);
        data = jsonObject.getString("data");
        JSONObject dataObject = JSON.parseObject(data);
        return dataObject.get("user_id").toString();

    }

    public String getAppToken() {
        String key = RedisConstant.FACEBOOK_LOGIN_APP_TOKEN;
        String appToken = redisCache.getCache(key, String.class);
        if (StringUtils.isEmpty(appToken)) {
            HashMap<String, String> params = new HashMap<String, String>();
            params.put("client_id", clientId);
            params.put("client_secret", clientSecret);
            params.put("grant_type", "client_credentials");
            String result = HttpInvokeUtil.httpGet(app_url, params);
            log.info("getAppToken result:{}", result);
            JSONObject jsonObject = JSON.parseObject(result);
            appToken = jsonObject.getString("access_token");
            redisCache.putCacheWithExpireTime(key, appToken, appTokenExpired);
        }
        return appToken;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值