微信{"errcode":48001,"errmsg":"api unauthorized, hints: [ req_id: 1QoCla0699ns81 ]"}
{"errcode":48001,"errmsg":"api unauthorized, hints: [ req_id: 1qocla0699ns81 ]"}
声明:是已认证的服务号
前置说明
网页授权获取用户基本信息:两种 scope 域
snsapi_base 不需要用户点同意,直接跳转到授权后的页面,只能用于获取openid,不能获取用户基本信息
snsapi_userinfo 会征求用户同意,授权后,可以获取用户基本信息
为了方便大家理解,把接口返回的数据展示下吧
{ "access_token":"yntxefbafnw565q4mai..................j-hlnzin9vq6bnvcvj8nkhdbsrhkljhqlilinqc", "expires_in":7200, "refresh_token":"eymfmvug0pgtowilpb..................t8o2uykl95_da23flv-nyfdgnt14ljl_x_zcmy", "openid":"oybgrs8mmu6besxxcx2z0rfrivjq", "scope":"snsapi_base" } { "access_token":"idfxvrmq3j6vxucz0iq..................g1xbkgjenbnskq4g0nyq5vmnskf4a4dzgu64", "expires_in":7200, "refresh_token":"j8ot4jwphxwvyay3i9r..................kret6p-8dot_-_tqffoluqi3ei-nt-i-degnrguma", "openid":"oybgrs8mmu6besxxcx2z0rfrivjq", "scope":"snsapi_userinfo" }
问题再现
1 首次使用 scope=snsapi_base 进行网页授权
2 拿到 code 后调用接口
3 根据上一步获取的 openid 和 access_token 调用接口 https://api.weixin.qq.com/sns/userinfo?access_token={0}&openid={1}&lang=zh_cn 获取用户基本信息
4 获取失败:返回 {"errcode":48001,"errmsg":"api unauthorized, hints: [ req_id: 1qocla0699ns81 ]"}
失败原因
scope=snsapi_base 时,只能用于获取openid,不能获取用户的基本信息(获取用户信息,需要用户同意。scope=snspai_base 授权时,并没有征求用户同意授权这一操作)
问题来了
(有时候成功,有时候失败)
为什么有的时候(或者另外一个公众号),按上面的步骤,能成功获取到用户的基本信息?
“48001,api unauthorized”之所以让很多人迷惑不解,就在于这个问题
先直接上解决方式,再说原因
使用 scope=snsapi_userinfo 进行一次网页授权,步骤跟上面【问题再现】一样,成功获取到用户的微信基本信息。
再使用 scope=snsapi_base 重复一遍【问题再现】,这次成功了!!!
原因
上面的实验其实已经说明原因了,怕有些人一下子理解不了,所以
第一次使用 scope=snsapi_base,这是不需要经过用户同意的授权,不能获取用户的基本信息
第二次使用 scope=snsapi_userinfo,这是需要用户点击同意的授权,能获取到用户的基本信息
使用 scope=snsapi_userinfo,用户同意授权后,在一定时间内,不需要用户的同意,也可以获取用户基本信息(此时使用 scope=snsapi_base 也能获取到用户基本信息:甚至参数openid的值随便填都没关系,可以是空格,但不能为空)
注意
使用 scope=snsapi_userinfo,用户同意授权后,access_token 的有效期是7200秒(两小时)。
access_token 失效后,可以使用 refresh_token 调用接口 } 重新获取 access_token(有效期7200秒)
(终于知道 refresh_token 是干嘛用的了吧)
refresh_token 的有效期是30天,即用户同意授权后,在30天内,不再需要用户同意授权,就可以获取用户基本信息
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: 做好网站内部链接优化的经验分享
下一篇: 关键字排名下降原因分析
推荐阅读
-
微信{"errcode":48001,"errmsg":"api unauthorized, hints: [ req_id: 1QoCla0699ns81 ]"}
-
微信{"errcode":48001,"errmsg":"api unauthorized, hints: [ req_id: 1QoCla0699ns81 ]"}
-
微信支付授权获取 openId {"errcode":40163,"errmsg":"code been used, hints: [ req_id: scqL1a02482017 ]"}
-
微信支付授权获取 openId {"errcode":40163,"errmsg":"code been used, hints: [ req_id: scqL1a02482017 ]"}