从OAuth回调中存储访问令牌的正确方法是什么

时间:2015-04-02 11:04:31

标签: java facebook oauth scribe

这是我的工作代码,代表Facebook用户获取访问令牌:

@Override
public void receiveCallback() {
    OAuthService service = new ServiceBuilder()
            .provider(FacebookApi.class)
            .apiKey(KEY)
            .apiSecret(SECRET)
            .callback("http://example.com/facebook_oath_callback/")
            .build();
    Verifier verifier = new Verifier(code);
    Token accessToken = service.getAccessToken(EMPTY_TOKEN, verifier);
    LOG.info("Got access token: " + accessToken);
}

可以在此代码之前重定向,并通过receiveCallback调用此facebook_oath_callback方法,并且能够正确获取accecssToken

我正在考虑将此令牌存储在这种bean中

class AccessToken {
  String facebookUID; // where to get this?
  String accessToken; 
}

然而,在回调方法的背景下,Facebook回拨,没有facebook UID,我们可以知道谁的访问令牌是这个?我在这里缺少什么?

1 个答案:

答案 0 :(得分:2)

您需要对Facebook Graph API进行另一次REST调用以“检查”访问令牌,并在该调用的JSON结果中找到您要查找的user_id元素。这在这里描述:https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow/v2.3#confirm

您会对“检查访问令牌”一节感兴趣。