如何在Facebook的Android 3.x SDK中检索third_party_id

时间:2014-07-23 21:57:39

标签: android facebook

我继承了一个使用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中的其他公共信息。没有必要请求额外的权限,但我缺少什么?

1 个答案:

答案 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();