遇到问题描述:
同样的网页授权获取用户基本信息代码,有些手机获取得了用户信息,有些手机获取不到,显示48001错误;
大家遇到过这样的问题吗?怎么解决的?
我活的用户的基本信息的代码如下:
/*
* 获得网页授权oauth2.0 返回当前用户的openid相关信息
*/
public function getOauth_userinfo($redirect_uri)
{
$curl = new \Curl();
$url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" . C('APPID') . "&redirect_uri=" . $redirect_uri . "&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect";
$userinfo = I("get.");
if (!$userinfo['code']) {
Header("Location: $url");
exit;
} else {
//使用CODE进行交换ACCESS_TOKEN
$getAccessTokenUrl = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" . C('APPID') . "&secret=" . C('APPSECRET') . "&code=" . $userinfo['code'] . "&grant_type=authorization_code";
$myres = $curl->get($getAccessTokenUrl);
$myres = json_decode($myres);
//刷新access_token
$refresh_token_url = "https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=" . C('APPID') . "&grant_type=refresh_token&refresh_token=" . $myres->refresh_token;
$refresh_token_res = $curl->get($refresh_token_url);
$refresh_token_res=json_decode($refresh_token_res);
//请求用户基本信息
$getUserInfoUrl = "https://api.weixin.qq.com/sns/userinfo?access_token=" . $refresh_token_res->access_token . "&openid=" . $refresh_token_res->openid . "&lang=zh_CN";
$userinfores = $curl->get($getUserInfoUrl);
$userinfo = json_decode($userinfores);
return $userinfo;
}
}
请注意读文档,scope=snsapi_base时是静默的,不弹出授权界面,只能获取用户openid,此时api未获得用户授权,所以你要拉取用户信息,就会弹出480001.如果要拉取用户信息请用snsapi_userinfo,当用户进入页面会弹出授权确认界面。