Facebook Open Graph:提交新动作

时间:2012-05-16 18:21:45

标签: facebook-graph-api

我刚开始使用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

当我粘贴已翻译的网址时,我收到此错误:

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

这一点我很困惑。我已尝试向我的时间轴发布操作,但它告诉我我需要一个有效的访问令牌,我已经提供了。那么我该如何发布一个动作呢?

2 个答案:

答案 0 :(得分:6)

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

用户访问令牌

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。默认情况下设置GET,因此它将返回不创建操作的操作。

或使用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,则应该在那里,通过选择“获取访问令牌”并选择(必须更改)来授予权限适合您的应用程序代码范围)

答案 1 :(得分:1)

如果您使用graph API explorer为您的应用生成访问令牌并使用它,则可能会更容易。这至少可以消除获取访问令牌时出错的可能性。