【问题标题】:Application post to its Wall申请贴到它的墙上
【发布时间】:2012-08-07 19:47:02
【问题描述】:

我找不到我正在尝试做的确切示例,如果这是一个重复的问题,很抱歉,但我已经寻找了过去几个小时。

我希望我的 Facebook 应用能够更新状态或发布到我管理的页面的墙上:http://www.facebook.com/amazingjobsapp 作为 CRON 作业的一部分。

我似乎找不到任何有关如何执行此操作的示例。任何指针都非常感谢。

编辑:

我曾经在下面编写代码,现在得到:

object(FacebookApiException)#11 (8) { ["result":protected]=> array(1) { ["error"]=> array(3) { ["message"]=> string(72) "(#200) 用户尚未授权应用程序执行此操作" ["type"]=> string(14) "OAuthException" ["code"]=> int(200) } } ["message": protected]=> string(72) "(#200) 用户未授权应用程序执行此操作" ["string":"Exception":private]=> string(0) "" ["code": protected]=> int(0) ["file":protected]=> string(86)

有人可以指导我为页面 id 413282938687554 授予我的应用 manage_page 和 publish_stream 权限吗?

编辑 2:如果我查看我的 graph.facebook.com/me/accounts,那么它会显示上面的页面 id 和访问令牌,但如果我在我的代码中使用它,那么我仍然会收到错误。

【问题讨论】:

    标签: facebook facebook-php-sdk facebook-wall


    【解决方案1】:

    您需要获得manages_pages 权限

    <?php
    $attachment = array(
        'message' => 'this is my message',
        'name' => 'This is my demo Facebook application!',
        'caption' => "Caption of the Post",
        'link' => 'http://mylink.com',
        'description' => 'this is a description',
        'picture' => 'http://mysite.com/pic.gif',
        'actions' => array(
            array(
                'name' => 'Get Search',
                'link' => 'http://www.google.com'
            )
        )
    );
    
    // To authenticated user's wall
    $result = $facebook->api('/me/feed/', 'post', $attachment);
    
    // To page's wall
    $result = $facebook->api('page-id/feed/','post',$attachment);
    
    // To user's wall
    $result = $facebook->api('user-id/feed/','post',$attachment);
    

    【讨论】:

      【解决方案2】:

      好吧,也许我错过了文档中的某些内容,但我发现解决方案如下:

      请注意,这适用于尝试从 cron 作业发布的人。

      • 将 manage_pages、publish_stream 和 offline_access 权限授予 你的应用
      • 从我/graph api explorer 中的帐户获取页面的访问令牌
      • 在初始化 fb 对象后添加一行简单的代码

        $facebook->setAccessToken("XXXXX");
        

      请注意,访问令牌必须是您从第 2 步获得的 PAGE 访问令牌,并记住如果您取消对应用的身份验证,访问令牌将会更改。

      【讨论】:

      • offline_access 已弃用 - 请参阅 developers.facebook.com/roadmap/offline-access-removal
      • 这也是从 php 发帖所必需的。我试过 /feed?access_token=XXXXX,但是没有用。但是 setAccessToken 做到了。为什么其他地方没有提到这一点?即使是一年后对类似问题的回答也无法解决这个问题。
      【解决方案3】:
      1. 应用程序需要向您询问manage_pages 和publish_stream 权限。
      2. 从图形 api /accounts 调用中获取您的页面 page_access_token。您拥有的每个页面都会列出自己的令牌。此令牌可以保存到数据库或在需要时访问。不建议公开或共享此令牌。
      3. 使用“php-sdk”发帖。

      参考:http://developers.facebook.com/docs/authentication/

      参考:http://developers.facebook.com/docs/reference/php/

      注意:要在墙上发帖时模拟主页(即以主页而不是当前用户的身份发帖),您必须使用具有 manage_pages 和 publish_stream 权限的主页 access_token,如上面的主页访问令牌中所述。

      示例:假设用户已经为 Facebook 安装并初始化了 php sdk


      <?php
      if($user){
        $vars = array(
        'message' => "message goes here",
        // you can uncomment below to enable an image with caption and link.
        //'picture' => "image",
        //'link' => "Link here",
        //'name' => "Name here",
        //'caption' => "Caption here",
        'show_error' => true,
        // comment out the access_token array below to post as a user instead of as page.
        array('access_token' => YourPageAccessToken)
      );
      $testpost = $facebook->api('YourPageId/feed', 'post', $vars);
      }
      ?>
      

      如果您觉得此答案有帮助或正确,请记得标记 将其向上或标记为正确,因此未来的用户将更轻松 寻找答案。

      【讨论】:

      • 感谢 Shawn,我知道它看起来很暗,但我就是无法理解它 - 我不能在物理上授予此权限而不必为此编写代码吗?
      • 是的,使用图形 api 浏览器,在右侧使用下拉菜单选择您的应用程序然后获取访问令牌,将出现一个权限对话框,您可以通过这种方式授予权限。 developers.facebook.com/tools/…
      • 嗨,肖恩,谢谢你,抱歉我有点昏暗,但我管理了几页我如何确保帖子进入正确的页面?
      • 我得到一个 oauth 异常,说用户没有授权这个操作。
      【解决方案4】:

      好吧,我原以为我们已经修复了它,但该帖子并非仅在我实际登录应用程序本身时才有效。

      我正在使用 Shawn 的代码以及来自“me/accounts/”的访问令牌提到的所有权限,用于 AmazingJobs 社区页面。

      我肯定已将 manage_pages、发布流和离线访问权限授予我自己的 facebook 帐户,然后我使用图形 api 浏览器在帐户中查找访问令牌并将其剪切并粘贴到我的代码中。有什么想法吗?

      【讨论】:

      • 请合并您的答案并删除一个。如果您不打算接受已经存在的答案,请做出并接受明确的答案。答案不应用于记录您的试错过程或进一步的问题。在每个答案和问题下都有一个编辑链接:)
      猜你喜欢
      • 2011-06-25
      • 1970-01-01
      • 1970-01-01
      • 2012-04-26
      • 1970-01-01
      • 2013-08-17
      • 2011-05-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多