大家都知道通过网页调用微信官方提供的API获取微信用户基本信息有两种方式:
- 用户通过授权的方式
- 用户非感知的静默授权方式
/*
* 获取网页静默授权url
*/
public function snsapiBaseUrl($url)
{
$redirect_uri = urlencode($url);
$auth_url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" . $this->appId . "&redirect_uri=" . $redirect_uri . "&response_type=code&scope=snsapi_base&state=base#wechat_redirect";
return $auth_url;
}
/*
* 获取用户信息的网页授权url
*/
public function snsapiUserinfoUrl($url)
{
$redirect_uri = urlencode($url);
$auth_url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" . $this->appId . "&redirect_uri=" . $redirect_uri . "&response_type=code&scope=snsapi_userinfo&state=userinfo#wechat_redirect";
return $auth_url;
}
然后,如果想通过静默授权方式获取用户信息,必须第一次调用snsapi_userinfo方式,经用户授权之后,以后再通过snsapi_base获取用户信息之后,就不需要用户授权了,否则则会报48001错误,错误信息为:
错误码说明文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1433747234
Array
(
[errcode] => 48001
[errmsg] => api unauthorized, hints: [ req_id: hJhbDpLoRa-1pKena ]
)
技术文档说明为: api 功能未授权 实际上后台已经取得了相关权限
然而官方文档并没有对此进行说明,开发者在开发时需注意
获取的正确的数据为: