facebook扩展访问令牌

时间:2012-06-06 12:19:04

标签: facebook oauth facebook-access-token extending

嗨,我在这里看到了答案 http://facebook.stackoverflow.com/questions/8982025/how-to-extend-access-token-validity-since-offline-access-deprecation 并试了一下,但我无法让它上​​班。

我有一个过期的令牌 - 但显而易见只需要一种方法来自动更新它。 这有可能有人给我一些代码吗

目前我正在尝试这个

try {
$result = $facebook->api(
                '/me/permissions/',
                'get',
                array('access_token' => $token)
        );
}
catch(FacebookApiException $e) {

    echo "token invalid";
    $facebook->setAccessToken($token);
    echo $facebook->getExtendedAccessToken();
}

但我还是得到了

token invalid{"error":{"message":"Error validating access token: Session has expired at unix time 1338858000. The current unix time is 1338985046.","type":"OAuthException","code":190,"error_subcode":463}}

任何帮助。谢谢 理查德


嗨,谢谢你的帮助,我已经有了扩展的工作,而且我对它的了解更多了 - 我有一个后续问题说我的令牌变得无效 - 该怎么办呢? 我仍然登录到Facebook,我已经获得了我的应用程序的许可,所以我只需要一个新密钥。

我试过这个

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

$url = $facebook->getLoginUrl(array('canvas'=>1,'fbconnent'=>1,'scope'=>'offline_access,publish_stream,email,user_about_me,user_birthday,user_website'));
file_get_contents($url);
$fb_session = $facebook->getUser();
echo $fb_session.'<br />';

$token = $facebook->getExtendedAccessToken();           
echo $token.'<br />';

由于您似乎需要“登录”到Facebook才能再次获取详细信息,但似乎您无法使用file_get_contents,因为Facebook需要您计算机上的Cookie。我正在努力做到这一点,所以不要打扰任何弹出窗口的用户,他们已经给了应用程序权限。

有什么想法吗? 理查德

哦,这样做似乎也不起作用。

$facebook = new Facebook(array(
    'appId'  => $this->fbApiKey,
    'secret' => $this->fbSecretKey,
    'cookie' => true,
));
$token = $facebook->getAccessToken();

2 个答案:

答案 0 :(得分:0)

试试这段代码

$facebook = new Facebook(array(
    'appId'  => $this->fbApiKey,
    'secret' => $this->fbSecretKey,
    'cookie' => true,
));
$token = $facebook->getAccessToken();

答案 1 :(得分:0)

根据Removal of offline_access permission

  

方案4:客户端OAuth并通过新端点扩展Access_Token到期时间

     

使用下面的新端点,您将能够扩展   现有的,未过期的,短期用户的到期时间   的access_token 即可。请注意,端点只能用于扩展   短期用户access_tokens。如果你传递的access_token有一个   长寿命的到期时间,端点将简单地传递相同的   access_token返回给你而不改变或延长过期时间   时间

一旦长期访问令牌到期,您将需要获得一个新的短期令牌,然后将其扩展 至于“如何扩展它”,它在同一篇文章中:

https://graph.facebook.com/oauth/access_token?             
    client_id=APP_ID&
    client_secret=APP_SECRET&
    grant_type=fb_exchange_token&
    fb_exchange_token=EXISTING_ACCESS_TOKEN
相关问题