我继承了一个使用Facebook third_party_id作为用户身份验证过程一部分的应用。该应用程序目前使用的是非常旧版本的Facebook SDK,我正在尝试将其更新为3.16。我发现third_party_id不会作为标准newMeRequest调用的一部分返回。在搜索后我预计以下呼叫工作(据报道类似的呼叫在iOS上工作):
Request.newGraphPathRequest(session, "me?fields=third_party_id", new Request.Callback() {
@Override
public void onCompleted(Response response) {
if(response.getError() == null) {
final String id = (String) response.getGraphObject().asMap().get("third_party_id");
mUser.setFbAuthenticatorCleartext(id, getApplicationContext());
mGotThirdPartyFacebookResponse = true;
...
但是,尝试此方法时,我看到以下错误: {Response:responseCode:400,graphObject:null,error:{HttpStatus:400,errorCode:2500,errorType:OAuthException,errorMessage:必须使用活动访问令牌来查询有关当前用户的信息。},isFromCache:false} < / p>
我已登录,并且能够收到用户的电子邮件&amp; newMeRequest中的其他公共信息。没有必要请求额外的权限,但我缺少什么?
答案 0 :(得分:0)
谢谢ChitownDev,你让我走上了正确的道路。以下是我最终的工作方式:
Bundle params = new Bundle();
params.putString("fields", "id,third_party_id,email");
new Request(session,
"me",
params,
HttpMethod.GET,
new Request.Callback() {
public void onCompleted(Response response) {
if(response.getError() == null) {
final String id = (String) response.getGraphObject().asMap().get("third_party_id");
mUser.setFbAuthenticatorCleartext(id, getApplicationContext());
...
}
}
).executeAsync();