我尝试使用以下方法获取扩展的长期访问 token
$facebook->setExtendedAccessToken();
$access_token = $facebook->getAccessToken();
查看SDK之后,我发现setExtendedAccessToken()函数正在设置长期访问 token
protected static $kSupportedKeys =
array('state', 'code', 'access_token', 'user_id');
和
$this->setPersistentData(
'access_token', $response_params['access_token']
);
并且getAccessToken()从中返回短期访问 token
protected $accessToken
那么setExtendedAccessToken()的目的是什么,因为它不返回任何内容?
最佳答案
@朱利安非常感谢您的启发。
我能够在不更改任何核心FB api文件的情况下完成这项工作。
发生的是,setExtendedAccessToken
调用将值发送到setPersistentData
,然后通过constructSessionVariableName
将其发送到 session 中。
因此,如果我们退出 session ,然后将其设置到facebook对象中,则一切就绪。
这是我的代码:
// ask for the extended token and get it from session ...
$facebook->setExtendedAccessToken();
$access_token = $_SESSION["fb_".FB_APP_ID."_access_token"];
// now set it into the facebook object ....
$facebook->setAccessToken($access_token);
// now our fb object will use the new token as usual ...
$accessToken = $facebook->getAccessToken();
关于php - 使用setExtendedAccessToken()获取生命周期长的访问 token 将返回生命周期短的 token ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12196958/