Facebook扩展访问令牌不起作用 - 但一切似乎都很好(?


Facebook extended access token doesn't work - but everything seems to be fine (?)

我尝试从服务器端请求获取 60 天的 facebook 访问令牌。用户登录后,我通过Facebook SDK的getAccessToken()函数检查访问令牌,之后我使用getExtendedAccessToken(),我在这里的某个地方找到了: 自弃用以来如何延长访问令牌有效期offline_access以请求 60 天的访问令牌:

   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'),
                    $params = array(    'client_id' => $this->getAppId(),
                                'client_secret' => $this->getApiSecret(),
                                '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'];
        }

不幸的是,它仍然无法正常工作,我的访问令牌在 2 小时后过期,所以我也尝试了这个:

    public function getSimpleExtendedAccessToken(){
    $request = 'https://graph.facebook.com/oauth/access_token?
                client_id='. $this->getAppId(). 
                '&client_secret=' .$this->getApiSecret(). 
                '&grant_type=fb_exchange_token
                &fb_exchange_token=' .$this->getAccessToken();
    $response = file_get_contents($request);
    $params = null;
    parse_str($response, $params);
    return $params['access_token'];
}

而这个也在 2 小时后过期。但是当我检查数组内部的内容时$params在第二个函数中写道:

阵列 ( [access_token] => AAAFM5sO7[...] [过期] => 4897 )

(那部分:"AAAFM5sO7[...]"当然是我的访问令牌号)

我收到的所有访问令牌都是相同的:第一个来自getAccessToken(),第二个来自getExtendedAccessToken(),第三个来自getSimpleExtendedAccessToken()

当然,当我越来越多地要求扩展访问令牌时,到期号不会续订,但它正在倒计时,从 Facebook 文档的角度来看,这是正确的,因为您不能每分钟都要求新的访问令牌,但为什么我无法获得 60 天的访问令牌?

谁能帮我,因为我有点融合?

我对自己的问题有部分答案。我尝试接收自己的扩展访问令牌(我是应用程序的所有者),因此 Facebook 没有给我扩展令牌,但是当我尝试使用其他令牌时,我会收到常规的 60 天访问令牌。