问题描述
前端在做微信网页授权时,调用我们已经运行很久的获取微信用户信息接口时,报微信错误码 48001。
解决办法
https://open.weixin.qq.com/connect/oauth2/authorize?appid=&redirect_uri=&response_type=code&scope=snsapi_base&state=#wechat_redirect
将微信网页授权地址中的 scope
参数设置为 snsapi_userinfo
。
问题原因
根据微信官方提供的《全局返回码说明》,我们查到错误码的解释:
根据错误码的提示,我们排查了公众号后台的配置,发现我们的接口权限已经授权。但是仍会报这个异常。而且,我们授权服务已经上线很久,以前的网页授权业务并没有这个问题。通过与前端沟通,核对了appid、snsapi_base等信息。发现snsapi_base
与以往的参数不一致。
- scope=snsapi_base 时,只能用于获取openid,不能获取用户的基本信息
- scope=snsapi_userinfo时,可以获取用户信息、open_id、union_id(需要绑定微信开放平台)等。
将 scope
设置为 snsapi_base
,调用微信获取用户信息接口时,由于未获得用户授权同意(snsapi_base为静默授权,不需要用户同意),因而调用接口失败。
最后,要吐槽微信这个返回码文档。并没有说清楚出现这个错误的真正原因。