我在我的应用程序中使用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...");
}
}
答案 0 :(得分:0)
问题是将facebook SDK升级为图形API v2.0。 Facebook为用户提供唯一的ID,在应用之间进行切换,这意味着给定的ID不是原始用户ID。
从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)));