将请求2.0应用程序生成的请求发送到“/ me”以外的请求

时间:2011-10-06 08:08:44

标签: javascript facebook facebook-graph-api

我正在尝试使用JS SDK或图形API发送应用程序生成的请求,但我没有成功和绝望。问题是,当我向当前登录的用户发送请求时,一切正常,但当我尝试发送给不同的用户时(即使此用户已经授权我的应用程序),我收到OAuth异常“#2用户无法发送此请求:未知错误“,有时”无法发送任何应用请求“。

我的应用启用了Request 2.0,并获得了publish_stream,read_stream和user_about_me权限的授权。我描述的相同错误消息甚至在Graph API资源管理器中显示。

使用JS SDK在这里描述了完全相同的问题: Sending an App Generated Request with the JavaScript SDK

...在这里使用Graph API: Posting app generated apprequest to other facebook users in Java

请帮忙。

1 个答案:

答案 0 :(得分:0)

如果您想向用户发送请求,您应该使用App Access Token(https://developers.facebook.com/docs/authentication/#applogin)POST到Graph API'/ user_id / apprequests'。此调用是设计为在服务器端执行,因为您不想共享App Access令牌:

curl -F 'access_token=APP_ACCESS_TOKEN' \
-F 'message=From the app to the user.' \
https://graph.facebook.com/USER_ID/apprequests

只能使用来自收件人的用户访问令牌(USER_ID)来实现相同目的:

curl -F 'access_token=USER_ACCESS_TOKEN' \
-F 'message=From the app to the user.' \
https://graph.facebook.com/USER_ID/apprequests

在JS SDK中,如果未添加“访问令牌”字段,则默认访问令牌将是登录用户。知道,上述向登录用户发送请求的呼叫将是:

FB.api('/me/apprequests', 'POST',  {message: 'From the app to the user.'});

通过在参数中添加App Access Token,也可以使用JS SDK完成第一次调用。但是,这是一个不要使用的情况,因为您不想共享App Access令牌客户端。