publish_stream的文档读取:“使您的应用程序能够将内容,评论和喜欢发布到用户的流和用户朋友的流中.通过此权限,您可以随时将内容发布到用户的订阅源,而无需offline_access. “
因此工作流程如下:
>具有publish_stream范围的FB.login()如下:
FB.login(function (response) { if (response.authResponse) { FB.api('/me/permissions',function (permissions) { if (permissions.data[0].publish_stream == 1) { //user has Now granted publish_stream to this application } }); } },{ scope: 'publish_stream' });
>使用C#Facebook SDK使用应用程序的访问令牌发布给该用户的朋友的墙.
var client = new FacebookClient(FacebookAppId,FacebookAppSecret); // Build the wall post dynamic parameters = new ExpandoObject(); parameters.message = facebookDeliveryQueueItem.MessageBody; // user message // Post to the wall client.Post(facebookRecipientId + "/Feed",parameters);
返回:
{"error":{"message":"(#200) The user hasn't authorized the application to perform this action","type":"OAuthException"}}
然而!如果我尝试使用此代码发布到我自己的墙上,它可以正常工作.
如果用户将publish_stream授予我的应用程序,我可以使用APPLICATION访问令牌(通过发出GET到https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id=APP_ID_HERE&client_secret=APP_SECRET_HERE得到这个)来发布在该用户的墙上 – 但不是该用户的朋友的墙.
解决方法
您应该在发出请求之前显式指定access_token,如果省略它,则使用当前用户的access_token.
parameters.access_token = FacebookAppId+"|"+FacebookAppSecret;
文档是正确的(在这种情况下).一旦用户使用应用程序access_token授予您publish_stream权限(无需请求offline_access!),您就可以在用户和他的朋友墙上发布关于墙所有者偏好的信息.某些用户设置隐私设置以拒绝特定用户/应用程序甚至其他任何人发布内容.
确保您可以使用http://facebook.com并使用Graph API Explorer工具(确保提供应用程序access_token)发布该特定朋友(您有问题)的墙.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。