PHP Facebook获得粉丝页面令牌

时间:2014-01-13 08:54:33

标签: php facebook-graph-api facebook-php-sdk

我在完成以下Q&之后构建了以下PHP代码。下面的代码为我的Facebook App生成一个不定的(两个月)访问令牌。

Facebook App基本上允许用户在我的脸书页面上将多张图片上传到他们的特定相册。要使这个应用程序工作,它需要两个访问令牌。 App访问令牌(下面的代码)和页面访问令牌。

我使用cron作业生成第一个访问令牌到文本文件(下面的代码),它工作正常。现在我想使用下面类似的代码生成页面访问令牌到另一个文本文件,但我还没有成功。

<?php

require_once 'library/facebook.php';
include '../constants.php';

define('TOKEN_FILE', 'fb_app_token.txt'); // dont need to change this


$fb = new Facebook(array(
    'appId' => FB_APP_ID,
    'secret' => FB_APP_SECRET,
    'cookie' => true,
));


function ensure_login($fb) {
    if (!$fb->getUser()) {
        header('Location: '.$fb->getLoginUrl(array(
            'scope' => 'manage_pages,publish_stream',
        )));
        die();
    }
}

function fetch_long_living_access_token($fb) {
    $qs = http_build_query(array(
        'client_id'         => $fb->getAppId(),
        'client_secret'     => $fb->getApiSecret(),
        'grant_type'        => 'fb_exchange_token',
        'fb_exchange_token' => $fb->getAccessToken(),
    ));

    $fb_resp = file_get_contents('https://graph.facebook.com/oauth/access_token?'.$qs);
    if (!$fb_resp) {
        ensure_login($fb);
    }
    parse_str($fb_resp, $fb_resp);
    if (!isset($fb_resp['access_token'])) {
        ensure_login($fb);
    }
    $fb->setAccessToken($fb_resp['access_token']);
    return $fb_resp['access_token'];

}

function save_page_access_token($token) {
    file_put_contents(TOKEN_FILE, $token);
}

function get_random_message($source) {
    $lines = preg_split('/[\n\r]+/', trim(file_get_contents($source)));
    return $lines[array_rand($lines)];
}


ensure_login($fb);
$page_access_token = fetch_long_living_access_token($fb);
save_page_access_token($page_access_token);
print 'saved access token: '.$page_access_token;


?>

到目前为止我尝试了什么:

<?php
require_once 'library/facebook.php';
include '../constants.php';
define('TOKEN_FILE', 'fb_page_accestoken.txt'); // dont need to change this
$fb = new Facebook(array(
    'appId' => FB_APP_ID,
    'secret' => FB_APP_SECRET,
    'cookie' => true,
));
$access_token = file_get_contents('fb_app_token.txt');
$response  = "https://graph.facebook.com/me/accounts?access_token=".$access_token;
echo $response;
?>

此代码如下。基本上它获取上述用户令牌,它为我提供了一个URL来获取不确定的(2个月)Facebook页面访问代码。

我在浏览器中输入此URL,它为我提供了所有页面的数组。在这种情况下,我选择相应页面的访问令牌。

我想获得类似于第一个代码的页面访问令牌 - 而不是使用我的第二个代码。或者,从第二个代码的数组中获取页面访问代码。

我无法找到如何从facebook api提供的数组中获取特定数据,例如页面访问代码。

1 个答案:

答案 0 :(得分:0)

请查看https://developers.facebook.com/docs/reference/php/facebook-api/了解详情。

如果我理解正确,您就不知道如何查询Facebook API以获取页面访问令牌。如果是这样,您可以通过以下方式执行此操作:

 $page_token_array = $fb->api('/me/accounts?fields=id,name,access_token&access_token='.$page_access_token);