使用Facebook SDK获取Facebook用户ID

时间:2014-06-27 10:43:23

标签: android facebook facebook-graph-api

我在我的应用程序中使用facebook登录,并且我能够获得有关登录用户(姓名,姓名,性别等等)的neccesery信息,因此我可以打开具有该ID的特定配置文件。因为我正在使用最新的facebook SDK,所以我无法获得用户ID。

我注意到这个SDK中的变化很少,但是我现在唯一缺少的是用户ID。我可以获得除id之外的其他信息 - 它给我一个错误的id(17位)。

当我通过浏览器检查它时(使用图形代替www)我可以看到用户ID只包含10位数。

以下是代码:

private void onSessionStateChange(final Session session, SessionState state, Exception exception) {
    if (state.isOpened()) {
        Log.i(TAG, "Logged in...");
        @SuppressWarnings("deprecation")
        RequestAsyncTask request = Request.executeMeRequestAsync(session,  new Request.GraphUserCallback() {
            @Override
            public void onCompleted(GraphUser user, Response response) {
                   if (session == Session.getActiveSession()) {
                        if (user != null) {
                            user_ID = user.getId();//user id
                            profileName = user.getName();//user's profile name
                            token = session.getAccessToken();
                            .
                            .
                            .
                        }
                        else
                        {
                        .
                        .
                        }
                    }
            }
        }); 
    } else if (state.isClosed()) {
        Log.i(TAG, "Logged out...");
    }
}

1 个答案:

答案 0 :(得分:0)

问题是将facebook SDK升级为图形API v2.0。 Facebook为用户提供唯一的ID,在应用之间进行切换,这意味着给定的ID不是原始用户ID。

Facebook reference:

  

从v1.0更改为v2.0

     

应用范围的用户ID:为了更好地保护人们的信息,何时   人们登录已升级使用的应用程序版本   Graph API v2.0,Facebook现在将发布应用程序范围的ID而不是   该人的原始身份证。

我的解决方案是使用浏览器,而不是Facebook应用程序。 网址应如下所示:

http://www.facebook.com/GivenUserId

和代码:

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.facebook.com/"+userid)));