facebook扩展访问令牌

问题描述:

嗨我已经在这里看到了答案 http://facebook.*.com/questions/8982025/how-to-extend-access-token-validity-since-offline-access-deprecation 并给了它一个去,但我无法让它工作。facebook扩展访问令牌

我有一个过期的令牌 - 但明显只是需要一种方法来自动更新它。 这可能可以有人滑倒我一些代码

目前我想这

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的再次获得详细信息,但它似乎像Facebook要求是饼干,你不能使用的file_get_contents在你的机器上。我试图在飞行中这样做,以免打扰任何弹出窗口的用户,并且他们已经给予应用程序许可。

任何想法? Richard

哦,只是这样做似乎也没有工作。

+0

不能扩展标记无效,唯一有效的令牌可扩展 –

+0

有趣那么你如何扩展一个有效的?实际上它们如何变得无效 –

+0

短期访问令牌有效期为一到两个小时,在它们到期之后,您必须获得一个新的令牌。 – CBroe

试试这个代码

+0

干杯 - 基本上是使用我用Facebook设置的cookie来获取新的访问令牌。所以如果我没有这个cookie,那么它不会得到一个新的令牌? –

+0

如果你设置cookie为false,那么你也可以获得新的令牌。 – prakash

按照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