以PAGE格式发布到PAGE

时间:2012-02-20 18:17:53

标签: oauth facebook-php-sdk access-token user-permissions

我正在尝试自动发布(在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/")

?>

2 个答案:

答案 0 :(得分:1)

您是否知道offline_access已被弃用?

答案 1 :(得分:0)

刚刚创建了一个全新的应用。确保已启用弃用脱机访问。去了探险家,在下拉列表中发现了我的新应用,授予了我自己manage_pages,去了me/accounts抓取了一个页面访问令牌,然后抓了它.Bummer,1小时到期,所以这是不好。所以我尝试交换这个1小时的页面令牌,我从Facebook收到了错误。

我回到了用户访问令牌,并将其交换了60天。在短绒中验证它是60天。回到me/accounts并抓住其中一个页面访问令牌并将其打印出来。惊喜!从那里得到了60天的令牌。

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