Yii Hybridauth身份验证失败!Facebook返回了无效的用户id解决方案

Yii Hybridauth身份验证失败!Facebook返回了无效的用户id解决方案,yii,hybridauth,Yii,Hybridauth,我已经解决了这个问题: 出于某种原因,来自/oauth/access_令牌的响应变成了有效的JSON。parse_str函数正在分析错误的格式。对于我来说,在libraries/hybridauth/Hybrid/thirdparty/Facebook/base_Facebook.php中更改这一行解决了这个问题: 请更改此代码 public function setExtendedAccessToken() { $response_params = array(); parse

我已经解决了这个问题: 出于某种原因,来自/oauth/access_令牌的响应变成了有效的JSON。parse_str函数正在分析错误的格式。对于我来说,在libraries/hybridauth/Hybrid/thirdparty/Facebook/base_Facebook.php中更改这一行解决了这个问题:

请更改此代码

public function setExtendedAccessToken() {
    $response_params = array();
    parse_str($access_token_response, $response_params);

    if (!isset($response_params['access_token'])) {
      return false;
    }   
}

public function getAccessTokenFromCode($code, $redirect_uri = null) {
    $response_params = array();
    parse_str($access_token_response, $response_params);

    if (!isset($response_params['access_token'])) {
        return false;
    } 
}
更改为:

public function setExtendedAccessToken() {  
    $response_params = json_decode($access_token_response, true);

    // Not a valid JSON format
    if(!isset($response_params['access_token'])) {
        // Try to parse
        $response_params = array();
        parse_str($access_token_response, $response_params);

        if (!isset($response_params['access_token'])) {
            return false;
        }
    }  
}

public function getAccessTokenFromCode($code, $redirect_uri = null) { 
    $response_params = json_decode($access_token_response, true);

    // Not a valid JSON format
    if(!isset($response_params['access_token'])) {
        // Try to parse
        $response_params = array();
        parse_str($access_token_response, $response_params);

        if (!isset($response_params['access_token'])) {
            return false;
        }
    }
}

此问题的解决方案: 出于某种原因,来自/oauth/access_令牌的响应变成了有效的JSON。parse_str函数正在分析错误的格式。对于我来说,在libraries/hybridauth/Hybrid/thirdparty/Facebook/base_Facebook.php中更改这一行解决了这个问题: 更改代码

/** *扩展访问令牌,同时删除可能导致 *已通过客户端流生成。多亏了http_bit_ly_b0Pt0H *为了解决问题。 */ 公共函数setExtendedAccessToken(){

}

/** *检索给定授权代码的访问令牌 *(以前由www.facebook.com代表 *特定用户)。授权码被发送到graph_facebook_com *并且,如果访问令牌是合法的,则生成合法的访问令牌 *并且生成它的用户都匹配,并且该用户是 *登录到Facebook或已授予脱机访问权限。 * *@param string$code一个授权码。 *@param string$redirect_uri可选重定向uri。默认空值 * *@return混合了用于交换授权码的访问令牌,或 *如果无法生成访问令牌,则为false。 */ 公共函数getAccessTokenFromCode($code$redirect\u uri=null){

}

至:

public function setExtendedAccessToken() {  
    $response_params = json_decode($access_token_response, true);

    // Not a valid JSON format
    if(!isset($response_params['access_token'])) {
        // Try to parse
        $response_params = array();
        parse_str($access_token_response, $response_params);

        if (!isset($response_params['access_token'])) {
            return false;
        }
    }  
}

public function getAccessTokenFromCode($code, $redirect_uri = null) { 
    $response_params = json_decode($access_token_response, true);

    // Not a valid JSON format
    if(!isset($response_params['access_token'])) {
        // Try to parse
        $response_params = array();
        parse_str($access_token_response, $response_params);

        if (!isset($response_params['access_token'])) {
            return false;
        }
    }
}
/** *扩展访问令牌,同时删除可能导致 *已通过客户端流生成。多亏了http_bit.ly_b0Pt0H *为了解决问题。 */ 公共函数setExtendedAccessToken(){

}

/** *检索给定授权代码的访问令牌 *(以前由www_facebook_com代表 *特定用户)。授权码被发送到graph_facebook_com *并且,如果访问令牌是合法的,则生成合法的访问令牌 *并且生成它的用户都匹配,并且该用户是 *登录到Facebook或已授予脱机访问权限。 * *@param string$code一个授权码。 *@param string$redirect_uri可选重定向uri。默认空值 * *@return混合了用于交换授权码的访问令牌,或 *如果无法生成访问令牌,则为false。 */ 公共函数getAccessTokenFromCode($code$redirect\u uri=null){


}

是吗?这是Yii 1的代码
$response_params = array();
parse_str($access_token_response, $response_params);

if (!isset($response_params['access_token'])) {
  return false;
}

...
$response_params = json_decode($access_token_response, true);

// Not a valid JSON format
if(!isset($response_params['access_token']))
{
  // Try to parse
  $response_params = array();
  parse_str($access_token_response, $response_params);

  if (!isset($response_params['access_token'])) {
    return false;
  }
}

...
$response_params = json_decode($access_token_response, true);

// Not a valid JSON format
if(!isset($response_params['access_token']))
{
  // Try to parse
  $response_params = array();
  parse_str($access_token_response, $response_params);

  if (!isset($response_params['access_token'])) {
    return false;
  }
}

...