微信{"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 相关文章推荐
Extjs中使用extend(js继承) 的代码
Mar 15 Javascript
jQuery.Validate验证库的使用介绍
Apr 26 Javascript
js Math 对象的方法
Sep 01 Javascript
给ListBox添加双击事件示例代码
Dec 02 Javascript
jQuery学习笔记之jQuery中的$
Jan 19 Javascript
EasyUI中实现form表单提交的示例分享
Mar 01 Javascript
Bootstrap前端开发案例二
Jun 17 Javascript
BootStrap 模态框实现刷新网页并关闭功能
Jan 04 Javascript
微信小程序支付之c#后台实现方法
Oct 19 Javascript
基于jQuery实现Ajax验证用户名是否可用实例
Mar 25 jQuery
Vue-router 中hash模式和history模式的区别
Jul 24 Javascript
微信小程序之侧边栏滑动实现过程解析(附完整源码)
Aug 23 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中使用xmlreader读取xml数据示例
2014/12/29 PHP
PHP中使用curl入门教程
2015/07/02 PHP
ie下$.getJSON出现问题的解决方法
2014/02/12 Javascript
JavaScript控制listbox列表框的项目上下移动的方法
2015/03/18 Javascript
jQuery实现Select左右复制移动内容
2016/08/05 Javascript
Vue.JS入门教程之列表渲染
2016/12/01 Javascript
AngularJS 在同一个界面启动多个ng-app应用模块详解
2016/12/20 Javascript
Javascript ES6中数据类型Symbol的使用详解
2017/05/02 Javascript
详解JS数据类型的值拷贝函数(深拷贝)
2017/07/13 Javascript
使用Node.js实现简易MVC框架的方法
2017/08/07 Javascript
JavaScript实现简单贪吃蛇效果
2020/03/09 Javascript
基于ant design日期控件使用_仅月份的操作
2020/10/27 Javascript
[37:45]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS Orenda
2014/05/22 DOTA
python提取内容关键词的方法
2015/03/16 Python
详解Python中最难理解的点-装饰器
2017/04/03 Python
Django 实现购物车功能的示例代码
2018/10/08 Python
解决Numpy中sum函数求和结果维度的问题
2019/12/06 Python
python enumerate内置函数用法总结
2020/01/07 Python
python实现梯度法 python最速下降法
2020/03/24 Python
Python Scrapy框架:通用爬虫之CrawlSpider用法简单示例
2020/04/11 Python
教你如何用python操作摄像头以及对视频流的处理
2020/10/12 Python
微软开源最强Python自动化神器Playwright(不用写一行代码)
2021/01/05 Python
CSS改变网页中鼠标选中文字背景颜色例子
2014/04/23 HTML / CSS
浅析HTML5中的 History 模式
2017/06/22 HTML / CSS
美国著名珠宝品牌之一:Jared The Galleria Of Jewelry
2016/10/01 全球购物
澳大利亚婴儿、幼儿和儿童在线设计师商店:Smooch Baby
2019/02/16 全球购物
巴西本土电商平台:Americanas
2020/06/21 全球购物
房屋租赁意向书
2014/04/01 职场文书
活动总结的格式
2014/05/07 职场文书
教师职位说明书
2014/07/29 职场文书
八一建军节营销活动方案
2014/08/31 职场文书
2014年大学生村官工作总结
2014/11/19 职场文书
公务员个人考察材料
2014/12/23 职场文书
关于五一放假的通知
2015/08/18 职场文书
2016教师节问候语
2015/11/10 职场文书
python游戏开发Pygame框架
2022/04/22 Python