微信{"errcode":48001,"errmsg":"api unauthorized, hints: [ req_id: 1QoCla0699ns81 ]"}


Posted in Javascript onOctober 12, 2018

{"errcode":48001,"errmsg":"api unauthorized, hints: [ req_id: 1QoCla0699ns81 ]"}

声明:是已认证的服务号 

前置说明

网页授权获取用户基本信息:两种 scope 域

https://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&redirect_uri={1}&response_type=code&scope={2}&state=ok#wechat_redirect

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 后调用接口 https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_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 调用接口 https://api.weixin.qq.com/sns/oauth2/refresh_token?appid={0}&grant_type=refresh_token&refresh_token={1} 重新获取 access_token(有效期7200秒)

(终于知道 refresh_token 是干嘛用的了吧)

refresh_token 的有效期是30天,即用户同意授权后,在30天内,不再需要用户同意授权,就可以获取用户基本信息

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
在IE,Firefox,Safari,Chrome,Opera浏览器上调试javascript
Dec 02 Javascript
基于jquery的一行代码轻松实现拖动效果
Dec 28 Javascript
Javascript 面向对象(三)接口代码
May 23 Javascript
浅析Cookie中的Path与domain
Dec 18 Javascript
把字符串按照特定的字母顺序进行排序的js代码
Jan 28 Javascript
JQuery通过AJAX从后台获取信息显示在表格上并支持行选中
Sep 15 Javascript
浅谈MVC+EF easyui dataGrid 动态加载分页表格
Nov 10 Javascript
jquery利用json实现页面之间传值的实例解析
Dec 12 Javascript
微信小程序 九宫格实例代码
Jan 21 Javascript
JavaScript判断输入是否为数字类型的方法总结
Sep 28 Javascript
Vue组件之单向数据流的解决方法
Nov 10 Javascript
JS实现扫码枪扫描二维码功能
Jan 03 Javascript
JS编写兼容IE6,7,8浏览器无缝自动轮播
Oct 12 #Javascript
Vue cli3 库模式搭建组件库并发布到 npm的流程
Oct 12 #Javascript
详解vue服务端渲染浏览器端缓存(keep-alive)
Oct 12 #Javascript
webpack4与babel配合使es6代码可运行于低版本浏览器的方法
Oct 12 #Javascript
在JS循环中使用async/await的方法
Oct 12 #Javascript
代码实例ajax实现点击加载更多数据图片
Oct 12 #Javascript
vue项目环境变量配置的实现方法
Oct 12 #Javascript
You might like
php下使用以下代码连接并测试
2008/04/09 PHP
PHP中COOKIES使用示例
2015/07/26 PHP
微信公众平台开发之配置与请求
2015/08/26 PHP
PHP实现根据时间戳获取周几的方法
2016/02/26 PHP
PHP实现腾讯短网址生成api接口实例
2020/12/08 PHP
用Javascript实现UTF8编码转换成gb2312编码
2006/12/22 Javascript
JavaScript入门教程 Cookies
2009/01/31 Javascript
JS弹出层的显示与隐藏示例代码
2013/12/27 Javascript
JavaScript中的console.group()函数详细介绍
2014/12/29 Javascript
基于JavaScript实现生成名片、链接等二维码
2015/09/20 Javascript
使用Chart.js图表库制作漂亮的响应式表单
2015/10/28 Javascript
JS动态给对象添加属性和值的实现方法
2016/10/21 Javascript
JavaScript数组去重的几种方法效率测试
2016/10/23 Javascript
基于jQuery的表单填充实例
2017/08/22 jQuery
vue中页面跳转拦截器的实现方法
2017/08/23 Javascript
Vue Socket.io源码解读
2018/02/07 Javascript
利用d3.js力导布局绘制资源拓扑图实例教程
2019/01/08 Javascript
vue实现歌手列表字母排序下拉滚动条侧栏排序实时更新
2019/05/14 Javascript
JavaScript实现联动菜单特效
2020/01/07 Javascript
[46:16]2018DOTA2亚洲邀请赛3月30日 小组赛B组 iG VS VP
2018/03/31 DOTA
从Python的源码来解析Python下的freeblock
2015/05/11 Python
Python数据分析之双色球统计单个红和蓝球哪个比例高的方法
2018/02/03 Python
pandas数值计算与排序方法
2018/04/12 Python
VSCode Python开发环境配置的详细步骤
2019/02/22 Python
Python小白必备的8个最常用的内置函数(推荐)
2019/04/03 Python
如何使用Pytorch搭建模型
2020/10/26 Python
美国婴儿用品店:Babies”R”Us
2017/10/12 全球购物
俄罗斯品牌服装在线商店:VIPAVENUE
2020/08/10 全球购物
园林技术个人的自我评价
2014/01/08 职场文书
人力资源主管职责范本
2014/03/05 职场文书
函授本科个人自我鉴定
2014/03/25 职场文书
2014年母亲节寄语
2014/05/07 职场文书
计算机专业求职信
2014/06/02 职场文书
退学证明范本3篇
2014/10/29 职场文书
应届毕业生求职信范文
2015/03/19 职场文书
2015国庆节66周年演讲稿
2015/03/20 职场文书