从该页面本身更新Facebook页面状态

时间:2010-11-29 23:28:38

标签: php facebook facebook-graph-api

我正在尝试更新我的页面状态(从我的页面)。我已成功使用以下代码发布到页面墙上:

require_once 'facebook-php-sdk/src/facebook.php';

// Create our Application instance.
$facebook = new Facebook(array(
  'appId'  => '...',
  'secret' => '...'
));

$attachment = array(
'access_token' => "...",
'message'=> "Hello World"
);

$facebook->api('/pageId/feed','POST', $attachment);

但帖子显示我从我的帐户(即:Joe博客)发布到该页面,我希望它显示它是由页面本身发布的(即:页面名称)。

或者我是以错误的方式去做的?我是否应该尝试更改页面的状态(如果可能)?

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

经过多天把头发拉过这个头发后,我似乎已经解决了这个问题。我会解释一下:

我的帖子来自我而不是网页的原因是因为我使用的access_token来自我的帐户而不是来自网页。您需要从页面本身获取访问令牌。

这里解释了这一点(http://developers.facebook.com/docs/api#auth)在“页面模拟”下

这就是我做到的。

我首先允许我的帐户使用此网址管理我拥有的网页:

https://graph.facebook.com/oauth/authorize?client_id=...&redirect_uri=...&scope=manage_pages

您将需要插入带有您的应用ID的client_id并插入重定向网址 - 您将被带到一个页面,它将要求您进行授权(您应该对其说:)

然后在php中我通过以下代码访问了我当前帐户和我管理的页面的详细信息:

require_once 'facebook-php-sdk/src/facebook.php';

$facebook = new Facebook(array(
  'appId'  => '...',
  'secret' => '...'
));

$attachment2 = array(
'access_token' => "..." //this is my current user access_token
);

$page =  $facebook->api('/me/accounts', 'get', $attachment2);
print_r($page);

这将打印出您管理的页面的详细信息以及这些页面的access_tokens(宾果!)

然后您可以使用那些/那些access_token(s)并将其插入我在上面发布的代码中并重新发送 - 它将从您的页面发布到您的页面。 :)

答案 1 :(得分:0)

您需要将粉丝页面的UID添加到api通话中。

我认为它应该是这样的:

$uid = 'your page id';
$facebook->api('/pageId/feed', 'POST', $attachment, $uid);

如果呼叫中没有提供UID,则默认为会话用户。

答案 2 :(得分:0)

pageID应定义为您尝试发布到的页面:

$pageID = "872348971237345"; //obtained from page's url

$status = $facebook->api($pageID.'/feed', 'post', $attachment);