微信{"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 相关文章推荐
你需要知道的JavsScript可以做什么?
Jun 29 Javascript
ajax页面无刷新 IE下遭遇Ajax缓存导致数据不更新的问题
Dec 11 Javascript
复制js对象方法(详解)
Jul 08 Javascript
jquery更换文章内容与改变字体大小代码
Sep 30 Javascript
Jquery通过JSON字符串创建JSON对象
Aug 24 Javascript
jQuery ztree实现动态树形多选菜单
Aug 12 Javascript
原生js实现选项卡功能
Mar 08 Javascript
easyui-datagrid特殊字符不能显示的处理方法
Apr 12 Javascript
vue中SPA单页面应用程序详解
Nov 07 Javascript
vue+iview写个弹框的示例代码
Dec 05 Javascript
vue mounted组件的使用
Jun 18 Javascript
vue-router之nuxt动态路由设置的两种方法小结
Sep 26 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 file_get_contents设置超时处理方法
2013/09/30 PHP
php查看请求头信息获取远程图片大小的方法分享
2013/12/25 PHP
PHP实现抓取HTTPS内容
2014/12/01 PHP
smarty模板引擎从配置文件中获取数据的方法
2015/01/22 PHP
document.onreadystatechange事件的用法分析
2009/10/17 Javascript
JQuery index()方法使用代码
2010/06/02 Javascript
jQuery版Tab标签切换
2011/03/16 Javascript
整理Javascript基础入门学习笔记
2015/11/29 Javascript
JavaScript生成二维码图片小结
2015/12/27 Javascript
Bootstrap每天必学之折叠
2016/04/12 Javascript
Javascript中的arguments对象
2016/06/20 Javascript
js时间戳与日期格式之间转换详解
2017/12/11 Javascript
基于JavaScript中标识符的命名规则介绍
2018/01/06 Javascript
vue中引用阿里字体图标的方法
2018/02/10 Javascript
JS中判断某个字符串是否包含另一个字符串的五种方法
2018/05/03 Javascript
Vue+webpack项目配置便于维护的目录结构教程详解
2018/10/14 Javascript
通过实例解析js简易模块加载器
2019/06/17 Javascript
node.js如何操作MySQL数据库
2020/10/29 Javascript
基于python编写的微博应用
2014/10/17 Python
Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录
2017/09/20 Python
python中将zip压缩包转为gz.tar的方法
2018/10/18 Python
python实现简单flappy bird
2018/12/24 Python
使用python3实现操作串口详解
2019/01/01 Python
Python中正反斜杠(‘/’和‘\’)的意义与用法
2019/08/12 Python
Python 日志logging模块用法简单示例
2019/10/18 Python
Tensorflow 实现释放内存
2020/02/03 Python
jupyter notebook tensorflow打印device信息实例
2020/04/20 Python
Python3批量创建Crowd用户并分配组
2020/05/20 Python
python代码中怎么换行
2020/06/17 Python
树莓派4B安装Tensorflow的方法步骤
2020/07/16 Python
HTML5 Canvas之测试浏览器是否支持Canvas的方法
2015/01/01 HTML / CSS
入党自我评价优缺点
2014/01/25 职场文书
网上开店必备创业计划书
2014/01/26 职场文书
厨师个人自我鉴定范文
2014/04/19 职场文书
个人担保书范文
2014/05/20 职场文书
治理商业贿赂工作总结
2015/08/10 职场文书