【问题标题】:JS SDK - Posting to a page wallJS SDK - 发布到页面墙
【发布时间】:2012-09-22 14:58:15
【问题描述】:

我正在使用 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,它适用于登录用户提要的第一个帖子。

编辑:

我已经做出了 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

我收到一个“unsupported get request" graph api 异常,这表明返回的 id 无效。我觉得我在这里很近,但我错过了一些东西。任何建议都将不胜感激,再次感谢所有回复的人。

编辑:删除了页面的链接,这是无意中留下的。

【问题讨论】:

  • 你有什么问题,发布到另一个页面?
  • 您应该能够对/PAGE_ID/feed 进行另一个 API 调用 - 这对您也不起作用吗?如果没有,你得到了什么错误?
  • 您是否在调用中缺少“/”以发布到页面的提要?您确定在同一页面上执行此操作并且不会丢失您用来进行“用户发布”API 调用的 FB 对象吗?
  • 还有几件事尚不清楚:1) 您希望页面上的帖子看起来像是用户发布的,还是页面本身发布了帖子? 2) 谁“拥有”该页面?它是您拥有的特定页面还是最终用户拥有该页面?
  • 我在回答中添加了一些关于如何作为页面进行身份验证的说明。

标签: javascript facebook facebook-javascript-sdk facebook-page


【解决方案1】:

首先尝试让它在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 调用时使用该访问令牌。我不确定您是否可以将此访问令牌用于 any 用户,或者仅允许管理页面的用户使用。您最好使用图形浏览器做一些实验来找出答案。

【讨论】:

  • 您好,非常感谢您的回复。请原谅我的回复迟到了,我昨天整天都被捆绑了。当您说您使用 pageid/feed 发布到页面时,您是否使用查询字符串传递了值?类似于(在图形 api 资源管理器中) pageid/feed?message=themessage ?我正在查看文档,但很难找到具体示例或有关事物如何工作的描述。再次感谢您的回复。
  • 我将消息作为 POST 值传递。图形浏览器让您只需单击即可构建它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-25
  • 2020-03-05
相关资源
最近更新 更多