嗨,我在这里看到了答案 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();
答案 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