0

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

我希望我的 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) [“文件”:受保护]=> 字符串(86)

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

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

4

4 回答 4

2

您需要获得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);
于 2012-08-07T19:56:11.970 回答
2

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

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

  • 向您的应用授予 manage_pages、publish_stream 和 offline_access 权限
  • 从图形 api 资源管理器中的我/帐户获取页面的访问令牌
  • 在初始化 fb 对象后添加一行简单的代码

    $facebook->setAccessToken("XXXXX");
    

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

于 2012-08-09T08:13:49.937 回答
0

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

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

我已经将 manage_pages、publish stream 和 offline_access 授予我自己的 facebook 帐户,然后我使用 graph api explorer 在帐户中查找访问令牌并将其剪切并粘贴到我的代码中。有任何想法吗?

于 2012-08-08T09:31:58.780 回答
0
  1. 应用程序将需要询问您的权限 manage_pagespublish_stream
  2. page_access_token从图形 api/accounts调用中获取您的页面。您拥有的每个页面都会列出自己的令牌。此令牌可以保存到数据库或在需要时访问。不建议公开或共享此令牌。
  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);
}
?>

如果您发现此答案有帮助或正确,请记住将其标记或标记为正确,以便将来的用户更容易找到答案。

于 2012-08-07T19:51:53.697 回答