Yii Hybridauth身份验证失败!Facebook返回了无效的用户id解决方案
我已经解决了这个问题: 出于某种原因,来自/oauth/access_令牌的响应变成了有效的JSON。parse_str函数正在分析错误的格式。对于我来说,在libraries/hybridauth/Hybrid/thirdparty/Facebook/base_Facebook.php中更改这一行解决了这个问题: 请更改此代码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
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;
}
}
...