我正在使用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);
});
我收到错误"this api call requires a valid app_id"
,但我的网页ID有效。当我拨打FB.init()
时,我正在传递我的应用ID,它适用于登录用户Feed的第一篇帖子。
修改:
我已经改变了Igy的建议。现在我收到错误:“”(#200)用户未授予应用程序自动发布Feed故事的权限“”
现在,正如我所说,我试图发布到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
我得到了一个“unsupported get request"
图形api异常,它表明返回的ID无效。我觉得我离这里很近但我错过了什么。任何建议都会受到赞赏,再次感谢所有回复的人。
编辑:删除了无意中留下的页面链接。
答案 0 :(得分:2)
首先尝试让它在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调用时使用该访问令牌。我不确定您是否能够将此访问令牌用于任何用户,或仅允许用户管理该页面。您最好使用图形资源管理器进行一些实验来查找。