测试微信登录,拉去用户信息时遇到错误:{"errcode":48001,"errmsg":"api unauthorized, hints: [ req_id: 3eOLXa0931ns89 ]"}

官方描述为:api功能未授权,请确认公众号已获得该接口,可以在公众平台官网-开发者中心页中查看接口权限。

在此不讨论未授权的情况。已授权的情况下任有可能出现该错误。

 

错误描述:

  • 第一步:用户同意授权,获取code 【正常】
  • 第二步:通过code换取网页授权access_token 【正常】
  • 第三步:拉取用户信息 【报错】

原因:

在第一步获取code时,有个参数scope

  • 取值snsapi_base:不弹出授权页面,直接跳转,只能获取用户openid
  • 取值snsapi_userinfo:弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息

 

所以若scope传了snsapi_base,是无法拉去用户信息的。

 

其实官方文档说的很清楚了,只是我没仔细看,我相信有很多人会跟我一样不仔细看,所以写个博客记录一下。