0

我正在尝试将(在 PHP 中)作为 Facebook 页面自动发布到 Facebook 页面。我在获取未过期的令牌,然后作为页面发布时遇到问题。看来我可以使用非过期令牌作为用户发布,但不能作为页面发布。由于文档在示例方面还有很多不足之处,有人可以概述实现这一目标的步骤吗?我创建了一个应用程序,并从用户那里授予了 manage_pages、publish_stream 和 offline_access 权限。当我尝试发布到页面时(没问题),它作为用户发布,而不是页面。我正在为用户的未过期访问令牌与页面的未过期令牌的概念而苦苦挣扎。

授予权限的代码:

<?
require_once 'facebook.php';
$app_id = "APP_ID";
$app_secret = "APP_SECRET";

$facebook = new Facebook(array(
 'appId' => $app_id,
 'secret' => $app_secret,
 'cookie' => true
));

if(is_null($facebook->getUser()))
{
 header("Location:{$facebook->getLoginUrl(array('req_perms' => 'user_status,publish_stream,user_photos,manage_pages,offline_access'))}");
 exit;
}
?>

和发帖的代码:

<?
require_once 'facebook.php';

$app_id = "APP_ID";
$app_secret = "APP_SECRET";
$page_id = "PAGE_ID";
$page_access_token = "PAGE_TOKEN";
$facebook = new Facebook(array(
 'appId' => $app_id,
 'secret' => $app_secret,
 'cookie' => true
));

if( !empty($page_access_token) ) {
    $args = array(
        'access_token'  => $page_access_token,
        'message'       => "Test post"
    );
    $post_id = $facebook->api("/$page_id/feed","post",$args);
} else {
}
header("Location: http://example.com/")

?>
4

2 回答 2

1

您知道不推荐使用offline_access吗?

于 2012-02-20T19:40:02.207 回答
0

刚刚创建了一个全新的应用程序。确保启用了已弃用的脱机访问。去资源管理器,在下拉列表中找到我的新应用,授予我自己manage_pages,去me/accounts抓取其中一个页面访问令牌,然后对其进行 linted。无赖,1 小时到期,所以这不好。所以我尝试交换那个 1 小时的页面令牌,但我从 Facebook 收到了一个错误。

我回到了用户访问令牌,并用它换了一个 60 天的令牌。在 linter 中验证这是 60 天。回到me/accounts并抓住其中一个页面访问令牌并将其 linted。惊喜!从那里获得了 60 天的令牌。

所以这个故事的寓意是,你不能交换页面代币,只能交换用户代币。但是使用 60 天的用户令牌,您可以获得 60 天的页面令牌。:)

于 2012-02-21T20:06:54.607 回答