大家都知道通过网页调用微信官方提供的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 功能未授权 实际上后台已经取得了相关权限
然而官方文档并没有对此进行说明,开发者在开发时需注意
获取的正确的数据为: