2012-08-07 297 views
0

我找不到我正在尝试做什么的示例,所以很抱歉,如果这是一个重复的问题,但我已经查找了最后几个小时。应用程序发布到墙壁

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

我似乎无法找到任何有关如何做到这一点的例子。任何指针都非常感谢。

编辑:

我用下面的代码和现在我得到:

对象(FacebookApiException)#11(8){[ “结果”:保护] =>数组(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)

有人可以通过授予我的应用程序manage_page和publish_stream权限来获取页面ID 413282938687554吗?

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

回答

0
  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,如上面的页面访问令牌中所述。

例子:假设用户已经安装并初始化PHP SDK为Facebook


<?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); 
} 
?> 

如果你觉得这个答案有帮助或者是正确的,请记住,以纪念 它或将其标记为正确,以便未来用户可以更轻松地找到答案 。

+0

谢谢肖恩,我知道它似乎很朦胧,但我无法让我的头围绕它 - 我不是身体上只是授予此​​权限,而不必编写代码? – 2012-08-07 19:55:56

+0

是的,使用图表API浏览器,在右侧使用下拉选择你的应用程序,然后获得访问令牌,一个权限对话框将出现,你可以授予这种方式。 http://developers.facebook.com/tools/explorer?method=GET&path=171535666239724 – 2012-08-07 20:02:54

+0

嗨肖恩谢天谢地,对不起,因为昏暗,但我管理几页如何确保帖子进入正确的页面? – 2012-08-07 20:15:26

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); 
0

好吧,我曾以为我们会固定它,我们没有岗位,只有当我实际登录到应用程序本身的工作原理。

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

我已经明确授予manage_pages,发布流和offline_acess到我自己的Facebook帐户,然后我使用图形api资源管理器在帐户中查找访问令牌并将其剪切并粘贴到我的代码中。有任何想法吗?

+1

请合并您的答案并删除一个答案。如果你不打算接受一个已经存在的答案,那么做出并接受一个明确的答案。不应该使用答案来记录您的试错过程或其他问题。在每个答案和问题下有一个编辑链接:) – 2012-08-09 14:07:05

2

好吧,也许我错过了在文档的东西,但我找到了解决办法有如下:

注意这是人谁是试图从一个cron作业来发布。

  • 授予manage_pages,publish_stream和offline_access烫发到 您的应用程序
  • 获得访问令牌为您的网页从我/在图形API探险
  • 帐户中添加一行简单的线条刚过您初始化FB对象

    $facebook->setAccessToken("XXXXX"); 
    

注访问令牌需要为t他从第2步获得的PAGE访问令牌,并记住如果您取消授权访问令牌将更改应用程序。

+0

'offline_access'已被弃用 - 请参阅https://developers.facebook.com/roadmap/offline-access-removal/ – CBroe 2012-08-09 11:39:52

+0

这对于从PHP发布也是必需的。我尝试了/feed?access_token = XXXXX,但没有奏效。但是setAccessToken做了。为什么这在其他地方没有提到?即使在一年后回答类似的问题也没有解决这个问题。 – mutatron 2014-01-09 21:33:54