我正在使用 JavaScript SDK。我有一个具有发布权限的应用程序,在采取某些操作后,将在登录的用户墙上发布帖子,如下所示:
FB.getLoginStatus(function (response) {
//we are authorized
if (response.status == "connected") {
var name = "Post name";
var body = "Post body";
var caption = "The caption";
var description = "The description";
var link = "http://www.facebook.com/mypage";
FB.api('/me/feed', 'post', { message:body,caption:caption,link:link,name:name,description:description}, function (response) {
console.log(response);
});
}
});
我想要做的是在用户页面成功发布帖子后发布到特定的 Facebook 页面。有没有一种方法可以安全地预授权应用程序来执行此操作?这可以通过 JavaScript SDK 实现吗?我环顾四周,没有找到明确的答案。我正在查看 FB 文档,但发现它在某些地方有点不稳定。谁能告诉我这是否可能?任何帮助或建议将不胜感激,非常感谢!
编辑:我的错误,我应该提供更多信息。这是我正在尝试做的事情:
var body = "The body";
var caption = "The caption";
FB.api("mypageid/feed", "post", { message: body, caption: caption }, function (response) {
console.log(response);
});
我收到错误“此 api 调用需要有效的 app_id”
,但我的页面 ID 有效。当我调用 FB.init() 时,我会传递我的应用程序 ID,它适用于登录用户源的第一个帖子。
编辑:
我已按照 Igy 的建议进行了更改。现在我收到错误:“”(#200) 用户尚未授予应用程序自动发布提要故事的权限“”
现在,正如我所说,我正在尝试发布到 Facebook 页面。我已登录拥有该页面的帐户,并转到该应用程序并单击允许以下权限:
email,user_photos,publish_stream
当我使用拥有该页面的帐户登录并检查我的状态时:
FB.getLoginStatus(function (response) {
console.log(response);
});
我“已连接”。我这样做错了吗?除了向拥有该页面的帐户授权之外,我还需要做更多的事情吗?有没有办法设置页面的允许权限?我做了一些挖掘,但找不到答案。
编辑: 好的,现在发生的事情是,如果我登录到拥有该页面的帐户,则帖子将发布到该页面。如果我使用另一个帐户登录,我会收到一个 ID 作为对 API 调用的响应,但它似乎不是有效的对象 ID。例如我刚刚收到这个:
id: 499973616681852_507724422573438
如果我访问http://graph.facebook.com/499973616681852_507724422573438
我收到“不支持的获取请求”
图形 API 异常,这表明返回的 id 无效。我觉得我离这里很近,但我错过了一些东西。任何建议将不胜感激,再次感谢所有回复的人。
编辑:删除了无意中留下的页面链接。
最佳答案
尝试让它在 graph explorer 中工作是一个很好的做法。第一的。请注意,您可以在右上角选择要在哪个应用程序下运行。我刚刚使用/PAGE_ID/feed 在您的页面上发布了一个帖子,效果很好。您将需要publish_stream 权限。如果您可以让它在图形浏览器中工作,您就会知道它可以在 JS SDK 中工作,并且您刚刚犯了某种语法错误。
另请注意,有一个 open high priority bug report对图表的某些调用返回“不支持的获取请求”。因此,即使您返回的 ID 无效,也请检查页面本身以查看帖子是否出现。
我还注意到用户本身也遇到了同样的错误。试试https://graph.facebook.com/507724422573438 。这是您应用程序的测试用户吗?如果是的话,作为一个真正的用户可能值得尝试一下。
由于您想将页面作为页面本身发布,因此您需要authenticate as a page然后在进行图形 api 调用时使用该访问 token 。我不确定您是否能够为任何用户或仅允许管理该页面的用户使用此访问 token 。您最好使用图形浏览器做一些实验来找出答案。
关于javascript - JS SDK - 发布到页面墙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12678723/