1

我正在尝试从我的服务器发布分数。

  • 我将我的应用程序设置为游戏。
  • 我有我的应用访问令牌。
  • 我正在发布到https://graph.facebook.com/USER_ID/scores
  • 我已授权并授予我的应用程序的 USER_ID(即我)的 publish_stream 和 publish_actions 权限。

但是,一个错误告诉我我需要一个用户访问令牌来执行该操作,正如 Facebook 在这里所说的那样:https ://developers.facebook.com/docs/score/

为用户创建或更新分数

只要您拥有 publish_actions 权限,您就可以使用应用程序 access_token 向 /USER_ID/scores 发出 HTTP POST 请求来发布分数或用户。

我看到了一个类似的问题,但没有得到解答:Facebook Graph API Explorer won't POST scores(他们最终创建了一个新应用程序,这不是一个真正的解决方案)

为了验证不是我错误地使用了 API,我去了 Graph API explorer 并在那里使用相同的访问令牌进行了尝试,但运气不好:

尝试使用 Graph API

有趣的是,如果我按照它所说的并尝试使用我的用户访问令牌,它会说:This method must be called with an app access_token.

是我遗漏了什么还是 Graph API 有错误?

谢谢,坎。

4

1 回答 1

2

看起来您的一切都是正确的,但是有一个相对鲜为人知的案例会产生该错误消息。

检查高级设置中的“应用程序类型”字段: 应用设置界面截图

如果在高级设置中将其设置为“Native/Desktop”而不是“Web”,则假定您的应用程序的二进制/本机分发包含应用程序机密。在此配置中,使用应用访问令牌进行的 API 调用是不受信任的,实际上该令牌被完全忽略。

将应用设置更改回“Web”,您应该能够使用应用访问令牌发布或删除分数和/或 成就

如果这是问题所在,您可以通过调用 https://graph.facebook.com/app?fields=migrations&access_token=[APP ACCESS TOKEN HERE]

在“Web”模式下,响应包含应用程序的迁移设置,例如:

{
  "migrations": {
    "secure_stream_urls": false, 
    "expiring_offline_access_tokens": false, 
    "requires_login_secret": false, 
    //etc
}

在“Native/Desktop”模式下,应用访问令牌不受信任,因此您无法访问应用的私有数据,响应为:

{
  "error": {
    "message": "An unknown error has occurred.", 
    "type": "OAuthException", 
    "code": 1
  }
}
于 2012-08-16T17:15:38.217 回答