尽管 Offline_access 已弃用,如何扩展访问令牌的有效性
问题:
Facebook 弃用Offline_access 权限阻碍了我们获取长期访问权限的能力代币。尽管文档表明服务器端 OAuth 令牌将保持长期有效,但事实并非如此。
答案:
编辑(2012 年 8 月 14 日) ):
官方 Facebook PHP SDK 已更新,引入修订版setExtendedAccessToken 函数。为了减轻潜在的会话重复问题,需要在函数执行时终止当前会话。此外,它在内部存储新的访问令牌,允许通过公共 getAccessToken 函数进行检索。从 Facebook PHP SDK GitHub 页面获取最新的 SDK。
原始答案:
base_facebook.php 中添加了一个新颖的公共函数,该函数授予对 60 的访问权限天可更新访问令牌。在正常访问令牌接收后实现此功能可能就足够了。此外,在开发者应用程序的高级设置中启用“弃用离线访问”被认为是必要的。
将以下代码插入 facebook 类中的 base_facebook.php 并调用该函数:
public function getExtendedAccessToken(){ try { // need to circumvent json_decode by calling _oauthRequest // directly, since response isn't JSON format. $access_token_response = $this->_oauthRequest( $this->getUrl('graph', '/oauth/access_token'), array( 'client_id' => $this->getAppId(), 'client_secret' => $this->getAppSecret(), 'grant_type'=>'fb_exchange_token', 'fb_exchange_token'=>$this->getAccessToken() ) ); } catch (FacebookApiException $e) { // most likely that user very recently revoked authorization. // In any event, we don't have an access token, so say so. return false; } if (empty($access_token_response)) { return false; } $response_params = array(); parse_str($access_token_response, $response_params); if (!isset($response_params['access_token'])) { return false; } return $response_params['access_token']; }
以上是Offline_access 弃用后如何获取长期 Facebook 访问令牌?的详细内容。更多信息请关注PHP中文网其他相关文章!