不允许使用全局ID。请改用特定于应用程序的ID

时间:2014-05-03 03:30:25

标签: facebook facebook-graph-api

在Graph API 2.0中

当我使用新的图形api访问我的朋友信息时,我收到了以下信息。

此处,xxx是用户ID。

{
  "error": {
    "message": "The global ID xxx is not allowed. Please use the application specific ID instead.", 
    "type": "OAuthException", 
    "code": 2500
  }
}

什么是应用程序特定ID? 至少,文档中没有任何内容。 (如果我使用Graph API 1.0,一切都会好的。)

5 个答案:

答案 0 :(得分:18)

以下摘自a blog post我就此主题撰写的文章回答了您的问题:

  

在v1.0的简单日子里,当Graph API报告用户时,它提供的id值是该Facebook用户的全局ID号。这些值在客户端应用程序之间可以共享的意义上是“全局的”。在v2.0中,/user端点及其子端提供的所有用户数据都使用特定于应用程序的ID。这些ID不仅是Facebook用户的唯一标识符,而且是客户端 - 用户对的唯一标识符。这意味着您无法在应用程序之间共享用户ID。 (尽管Facebook确实provide an API用于在属于单一组织的应用程序之间进行映射。)

     

这一事实的一个重要结果是,您用于开发的Facebook应用程序识别的用户ID与您的生产应用程序识别的用户ID不匹配。因此,如果您将用户的Facebook ID存储在生产中的数据库中,您将无法将该数据库中的用户与开发中的API返回的数据进行匹配。那太烦人了!

     

没有办法绕过它。您只需从开发应用程序中查询一些朋友,并在开发数据库中手动覆盖存储的Facebook ID。这将给你一些反对的例子。

答案 1 :(得分:1)

为了轻松解决这个问题,我刚刚添加了"版本:' v1.0' "在我的FB.init中这样:

window.fbAsyncInit = function() {
  FB.init({
    appId: '*****', 
    cookie     : true,  // enable cookies to allow the server to access 
                        // the session
    xfbml      : true,  // parse social plugins on this page
    version    : 'v1.0' // use version 2.0
  });
};

当然这是暂时的,需要按照Asymmetric

的建议查看不同的文档

答案 2 :(得分:0)

对于使用API​​ 2.0版的应用 - 您只能使用App-Scoped-ID在v2.0 +上访问有关用户的数据

如果您是将某些通话从v1.0升级到v2.0的现有应用,则可以继续使用您为您应用的用户收到的用户ID - 适用于您应用的非用户如果要访问其数据,则必须使用应用程序范围的ID,并从提供该ID的同一应用程序进行调用

有关App Scoped ID如何在这里工作的更多信息:https://developers.facebook.com/docs/apps/changelog#v2_0_graph_api

答案 3 :(得分:-1)

这是因为您使用应用访问令牌而不是用户访问令牌

尝试this page:

中的用户令牌

如果可行,您需要考虑获取用户access token from your app。您可以为用户提供提示,并在redirect_uri参数

上接收代码作为参数
https://www.facebook.com/dialog/oauth?client_id={app-id}&redirect_uri={redirect-uri}

收到该代码后,您可以将其兑换为具有以下请求的用户访问令牌:

GET https://graph.facebook.com/oauth/access_token?client_id={app-id}&redirect_uri={redirect-uri}&client_secret={app-secret}&code={code-parameter}

答案 4 :(得分:-1)

全局ID是您的用户ID,特定于应用程序的ID是您能够访问的ID(没人知道)!此消息表示Facebook无权访问您的个人资料,无法对您的应用程序进行身份验证!换句话说,您需要为用户提供访问令牌,为应用程序提供访问数据的适当权限。您可以在此处使用Graph API Exlorer手动获取短期访问令牌https://developers.facebook.com/tools/explorer 要访问您的朋友信息,您必须授予user_friends权限。有关访问令牌及其生活的更多信息,请访问:https://developers.facebook.com/docs/facebook-login/access-tokens