从 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" 的部分感兴趣。
这是我代表 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" 的部分感兴趣。