如何使用页面名称而不是用户名将状态发布到Facebook页面?

时间:2012-02-09 23:18:44

标签: php post feed status facebook-page

如何使用PHP SDK和图形API将状态消息发布到页面(而不是用户配置文件),同时状态消息似乎是通过页面ID而不是用户ID发布的?我的应用程序可以成功地将状态更新发布到页面墙,但它似乎是来自管理员用户名的墙上帖子,而不是页面名称的状态更新,就像在Facebook上本地发布一样。换句话说,如果页面名称是“Cool Stuff”并且用户名是“Joe Smith”,我想在“Cool Stuff”页面上发布状态更新,但是我的应用程序帖子的更新显示在“Joe Smith”中。我已经在状态数组中明确设置了页面ID和页面名称,但它似乎没有帮助。这是我目前的代码:

$post_info = array(
 'access_token' => $facebook->access_token,
 'type' => 'status',
 'message' => 'Hello World!',
 'from' => array('id' => $page_id, 'name' => $page_name)
);
$facebook->api('/' . $page_id . '/feed/', 'post', $post_info);

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

我在FB API认证文档中找到了解决方法:

https://developers.facebook.com/docs/authentication/

答案在页面底部附近。搜索“页面登录”部分。基本上你的应用程序必须查询FB以获取用户页面访问令牌的列表。您可以找到要作为其所在页面的令牌,并将其替换为状态消息帖子中的普通用户访问令牌。所以我添加了这段代码来获取用户的页面访问权限(你的应用必须具有manage_pages权限才能使用):

$ all_accounts = $ facebook-> api('/ me / accounts');

如果使用print_r转储$ all_accounts,您将看到它是一组页面名称和访问令牌。获取您想要的页面的令牌,并使用我在初始问题中发布的代码中的页面令牌替换$ facebook-> access_token(用户的访问令牌)。它会将状态作为页面管理员而不是用户发布到页面。

答案 1 :(得分:0)

如果您是该页面的管理员,只需进行身份验证并将状态作为页面的UserID而不是您的UserID发送。它们是两个不同的实体。

这样做可以解决您的问题:-)只需确保首先针对您的应用程序手动验证您的页面: - )