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

What is the correct way to store access token from OAuth callback

这是我代表 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);
}

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

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

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

然而,在 Facebook 回调的回调方法的上下文中,没有我们可以知道这是谁的访问令牌的 facebook UID?我在这里错过了什么?

您需要对 Facebook Graph API 进行另一个 REST 调用以 "inspect" 访问令牌,并且在该调用的 JSON 结果中有 user_id 元素正在寻找。此处描述:https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow/v2.3#confirm

您可能会对名为 "Inspecting access tokens" 的部分感兴趣。