我已经解决了这个问题: 出于某种原因,/ oauth / access_token的响应变为有效的JSON。 parse_str函数正在解析错误的格式。对我来说,更改库/ 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;
}
}
}
答案 0 :(得分:0)
此问题的解决方案: 出于某种原因,/ oauth / access_token的响应变为有效的JSON。 parse_str函数正在解析错误的格式。对我来说,更改库/ hybridauth / Hybrid / thirdparty / Facebook / base_facebook.php中的这一行解决了这个问题: 更改代码
/ ** *扩展访问令牌,同时删除可能存在的短期令牌 *已通过客户端流程生成。感谢http_bit_ly_b0Pt0H *为解决方法。 * / public function setExtendedAccessToken(){ ...
$response_params = array();
parse_str($access_token_response, $response_params);
if (!isset($response_params['access_token'])) {
return false;
}
...
}
...
/ ** *检索给定授权码的访问令牌 *(以前由www.facebook.com代表 *特定用户)。授权码发送到graph_facebook_com *并提供访问令牌生成合法访问令牌 *和生成它的用户都匹配,用户是 *登录Facebook或授予离线访问权限。 * * @param string $ code授权码。 * @param string $ redirect_uri可选的重定向URI。默认为null * * @return mixed为授权代码交换的访问令牌,或 *如果无法生成访问令牌,则为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;
}
...
}
要强>
/ ** *扩展访问令牌,同时删除可能存在的短期令牌 *已通过客户端流程生成。感谢http_bit.ly_b0Pt0H *为解决方法。 * / 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;
}
}
...
}
...
/ ** *检索给定授权码的访问令牌 *(以前由www_facebook_com代表 *特定用户)。授权码发送到graph_facebook_com *并提供访问令牌生成合法访问令牌 *和生成它的用户都匹配,用户是 *登录Facebook或授予离线访问权限。 * * @param string $ code授权码。 * @param string $ redirect_uri可选的重定向URI。默认为null * * @return mixed为授权代码交换的访问令牌,或 *如果无法生成访问令牌,则为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;
}
}
...
}