我正在尝试使用 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
请帮忙。
最佳答案
如果您想向用户发送请求,您应该使用应用程序访问 token (https://developers.facebook.com/docs/authentication/#applogin) POST 到 Graph API '/user_id/apprequests'。此调用设计为在服务器端执行,因为您不想共享您的应用程序访问 token :
curl -F 'access_token=APP_ACCESS_TOKEN' \
-F 'message=From the app to the user.' \
https://graph.facebook.com/USER_ID/apprequests
仅使用接收者 (USER_ID) 的用户访问 token 即可实现相同目的:
curl -F 'access_token=USER_ACCESS_TOKEN' \
-F 'message=From the app to the user.' \
https://graph.facebook.com/USER_ID/apprequests
在JS SDK中,如果没有添加Access Token字段,则默认的Access Token为登录用户的Access Token。知道了,上面向登录用户发送请求的调用将是:
FB.api('/me/apprequests', 'POST', {message: 'From the app to the user.'});
第一次调用也可以使用 JS SDK 来完成,只需在参数中添加 App Access Token 即可。但是,这是一个请勿使用的情况,因为您不想在客户端共享您的应用程序访问 token 。
关于javascript - 将 Request 2.0 应用程序生成的请求发送到 "/me"之外的其他位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7671666/