这是我的工作代码,代表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,我们可以知道谁的访问令牌是这个?我在这里缺少什么?
答案 0 :(得分:2)
您需要对Facebook Graph API进行另一次REST调用以“检查”访问令牌,并在该调用的JSON结果中找到您要查找的user_id
元素。这在这里描述:https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow/v2.3#confirm
您会对“检查访问令牌”一节感兴趣。