我正在使用Facebook PHP SDK来调用相关的API来发布和获取数据。目前我正在数据库中保存用户访问令牌,但它会在60天后过期。如何刷新用户访问令牌?
1。我什么时候需要刷新访问令牌?它到期后还是之前?
2。刷新访问令牌的最佳方法是什么?
3。我的用户是否需要再次登录才能刷新访问令牌?
这是我用来扩展访问令牌的功能。但过期时间仍然相同。
public function getExtendedAccessToken($access_token)
{
$token_url="https://graph.facebook.com/oauth/access_token";
$params=array('client_id'=>self :: appId,'client_secret'=>self :: appSecretId,'grant_type'=>'fb_exchange_token','fb_exchange_token'=>$access_token);
$response = $this->curl($token_url,$params);
$response = explode ('=',$response);
$response = explode ('&',$response[1]);
$response = $response[0];
return $response;
}
答案 0 :(得分:6)
access token
无法像这样刷新,用户应该再次访问该应用以获取新令牌。
您可以随时刷新令牌。事实上,最好的方法是每次用户访问您的应用时刷新令牌。这样,如果用户在60天内继续访问应用程序,则令牌永远不会过期。
答案 1 :(得分:0)
试试这个:
$app_id = FB_APP_ID;
$app_secret = FB_SECRET_ID;
$canvas_URL = FB_PAGE_URL;
$code = $_REQUEST["code"];
if(empty($code)) {
$_SESSION['state'] = md5(uniqid(rand(), TRUE)); //CSRF protection
$dialog_url = "https://www.facebook.com/dialog/oauth?client_id="
. $app_id . "&redirect_uri=" . $canvas_URL . "&state="
. $_SESSION['state'];
echo("<script> top.location.href='" . $dialog_url . "'</script>");
}
if($_REQUEST['state'] == $_SESSION['state']) {
$facebook->api('oauth/access_token', array(
'client_id' => FB_APP_ID,
'client_secret' => FB_SECRET_ID,
'type' => 'client_cred',
'code' => $code,
));
$token = $facebook->getAccessToken();
echo$token;
}
答案 2 :(得分:0)
public function getExtendedAccessToken($ access_token) {
$token_url="https://graph.facebook.com/oauth/access_token";
$params=array('client_id'=>self :: appId,'client_secret'=>self :: appSecretId,'grant_type'=>'fb_exchange_token','fb_exchange_token'=>$access_token);
$response = $this->curl($token_url,$params);
$response = explode ('=',$response);
$response = explode ('&',$response[1]);
$response = $response[0];
return $response;
}