3

我刚开始使用 Facebook SSO 和 OpenGraph。我有 SSO 与我的 iOS 应用程序一起使用,现在我开始了解如何发布 OpenGraph 操作。

我已经设置了一个新的操作类型,我需要提交它。当我这样做时,我收到错误:

您必须使用此操作类型将至少一项操作发布到您的时间轴。查看文档。

好的,所以我点击了有用的文档链接,它告诉我我想这样做:

https://graph.facebook.com/me/recipebox:cook?recipe=http://www.example.com/pumpkinpie.html&access_token=YOUR_ACCESS_TOKEN

所以我把它翻译成这样:

https://graph.facebook.com/me/fotoferret:hug?ferret=http://www.example.com/pumpkinpie.html&access_token=MY_ACCESS_TOKEN

fotoferret 是我的命名空间,拥抱是我的行动

其中 MY_ACCESS_TOKEN 是返回的值:

https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id=MY_APP_ID&client_secret=MY_APP_SECRET

当我粘贴翻译后的 URL 时,我得到了这个错误:

{
   "error": {
      "message": "An active access token must be used to query information about the current user.",
      "type": "OAuthException",
      "code": 2500
   }
}

这一点我很困惑。我尝试将操作发布到我的时间线,但它告诉我我需要一个我提供的活动访问令牌。那么我怎样才能发布一个动作呢?

4

2 回答 2

6

使用应用访问令牌时,请不要使用用户 ID /me。您正在代表应用程序而不是直接代表用户执行操作。

用户访问令牌

https://graph.facebook.com/me/fotoferret:hug?ferret=http://www.example.com/pumpkinpie.html&access_token=MY_ACCESS_TOKEN

应用访问令牌

https://graph.facebook.com/ID/fotoferret:hug?ferret=http://www.example.com/pumpkinpie.html&access_token=MY_ACCESS_TOKEN

使用 Graph Explorer 时,请务必将选项切换为POST而不是 get GETGET默认情况下设置,因此它将返回不创建的操作。

或使用 cURL

curl -F 'access_token=MY_ACCESS_TOKEN' \
-F 'ferret=http://www.example.com/pumpkinpie.html' \
https://graph.facebook.com/ID/fotoferret:hug

如果您启用了“需要应用令牌才能发布”并获得

{"error":{"message":"(#15) This method must be called with an app access_token.","type":"OAuthException","code":15}}

这意味着你正在使用

curl -F 'access_token=MY_ACCESS_USER_TOKEN' \
-F 'ferret=http://www.example.com/pumpkinpie.html' \
https://graph.facebook.com/me/fotoferret:hug

使用MY_APP_TOKEN. 如果你得到,

{"error":{"message":"An active access token must be used to query information about the current user.","type":"OAuthException","code":2500}}

这意味着你正在使用

curl -F 'access_token=MY_APP_TOKEN' \
-F 'ferret=http://www.example.com/pumpkinpie.html' \
https://graph.facebook.com/me/fotoferret:hug

您应该使用数字 id

curl -F 'access_token=MY_APP_TOKEN' \
-F 'ferret=http://www.example.com/pumpkinpie.html' \
https://graph.facebook.com/ID/fotoferret:hug

如果你得到

{"error":{"message":"(#200) Requires extended permission: publish_actions","type":"OAuthException","code":200}}

用户在他们的设置中没有为我/权限设置的 publish_actions 操作,它应该在那里,"publish_actions": 1好像没有,通过选择“获取访问令牌”并选择授予权限(您必须更改以适合您的应用程序代码范围为出色地)

于 2012-05-16T18:44:17.243 回答
1

如果您使用图形 API 资源管理器为您的应用程序生成访问令牌并使用它,可能会更容易。这至少可以消除您在获取访问令牌时出错的任何可能性。

于 2012-05-16T18:30:30.587 回答