我刚开始使用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
}
}
这一点我很困惑。我已尝试向我的时间轴发布操作,但它告诉我我需要一个有效的访问令牌,我已经提供了。那么我该如何发布一个动作呢?
答案 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为您的应用生成访问令牌并使用它,则可能会更容易。这至少可以消除获取访问令牌时出错的可能性。