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

{"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天內,不再需要用戶同意授權,就可以獲取用戶基本信息

?

?

http://www.cnblogs.com/liaolongjun/p/6080240.html

轉載于:https://www.cnblogs.com/lixiuran/p/8777646.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/453015.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/453015.shtml
英文地址,請注明出處:http://en.pswp.cn/news/453015.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

解決ubuntu首次安裝Mysql之后,首次登錄出現ERROR 1698 (28000): Access denied for user 'root'@'localhost'的方法

解決步驟: 1.打開終端,輸入sudo vi /etc/mysql/debian.cnf 打開/etc/mysql/debian.cnf文件,顯示如下: 2.mysql -udebian-sys-maint -p 打開mysql 輸入密碼為上圖中password字段 3.修改root密碼 ALTER USER rootlocalhost IDEN…

六十萬的成長_我的EA策略分析和實現

曾經看過一個故事:在流水線上需要檢測面包盒子是不是空的,科技人員使用各種紅外線等等高科技,達到了目的;有一個工人用一臺風扇就解決了這個問題......其實解決問題可以很簡單,只要能實現目標,過程越簡單越…

流量控制和擁塞控制

流量控制是用于控制調制解調器與計算機之間的數據流,具有防止因為計算機和調制解調器之間通信處理速度的不匹配而引起的數據丟失。通常有硬件流量控制(RTS/CTS)和軟件流量(XON/XOFF)控制。 擁塞現象是指到達通…

內聚的極限: 軟件開發的不確定性原理

高內聚是有極限的. 當代碼在一個維度上高度內聚的時候, 在其它維度上是發散的. -- 代碼內聚設計的不確定性原理 大家都知道量子力學的不確定性原理: 在微觀世界里, 有幾對物理量不能同時精確的測定, 包括速度與位置, 以及能量與時間. 比如當我們精確的測定一個粒子的速度使其誤…

python獲取window共享目錄列表_利用Python獲取DICOM RTstructure勾畫列表

在《利用Python打開DICOM CT文件》一文中,我們利用pydicom.dcmread()讀取了CT圖像。本文中我們將修改load_scan()函數來讀取RTstructure文件并獲取勾畫列表1. 打開Jupyter notebook,導入需要的科學包import numpy as npimport mathimport pydicomimport …

sublime 自定義快捷鍵

[{ "keys": ["altspace"], "command": "auto_complete" }, // 自動提示、補全{ "keys": ["ctrlalti"], "command": "reindent" }, //整理代碼快捷鍵{ "keys": ["f12"…

Ubuntu中安裝、生成、導入、導出、Python3虛擬環境

1.安裝Ubuntu虛擬環境、以及可以支持虛擬環境的模塊 sudo apt install virtualenv sudo apt install virtualenvwrapper 安裝完成之后,進入home目錄,輸入命令ls -al查看是否出現.virtualenvs目錄,如果沒有則手動創建.virtualenvs目錄 重要…

Coursera課程 Programming Languages, Part C 總結

碎言碎語 和前面的 ML 和 Racket 感覺明顯不一樣了,一邊學著一邊覺得這真是一門奇怪的語言,有著各種奇怪的語法,不過真的算是一個奇妙的體驗(相比前面的兩門語言,Ruby 的學習資源多了不少)。week 1 的作業直…

如何判斷網絡是否進入擁塞狀態

通過觀察網絡的吞吐量與網絡負載間的關系 如果隨著網絡負載的增加,網絡的吞吐量明顯小于正常的吞吐量,那么網絡就進入例如輕度擁塞的狀況。 如果網絡得吞吐量隨著網絡負載的增大反而下降,那么網絡就可能進入擁塞狀態。 如果網絡的負載繼續…

如何拷貝工程_如何將premiere的工程及素材文件打包?

我們在剪輯視頻的時候經常會遇到素材丟失的情況,或者說需要換地方或換電腦繼續剪輯。特別是以前做的視頻現在需要修改一些地方,然后打開工程文件會發現素材丟失,如圖:這種情況要不就是素材已經刪除,要不就是素材改變了…

邁出從3K到1W的重要一步——掌握設計模式

IT職場的小菜經常有這樣的疑問: 為什么一個相似的功能,大牛一會兒就搞定,然后悠閑地品著下午茶逛淘寶;而自己加班加點搞到天亮還做不完。 為什么用戶提出需求變更后,大牛只需瀟灑地敲敲鍵盤,改改配置&#…

使用pip安裝virtualenv時出現問題

使用pip出現問題 fxd0ubuntu:~$ sudo pip install virtualenv [sudo] password for fxd0: env: ‘pip’: No such file or directory fxd0ubuntu:~$ pip insatall virtualenv Command pip not found, but can be installed with: sudo apt install python-pip 安裝pip fxd0…

jquery 獲取 outerHtml 包含當前節點本身的代碼

在開發過程中,jQuery.html() 是獲取當前節點下的html代碼,并不包含當前節點本身的代碼,然后我們有時候確需要,找遍jQuery api文檔也沒有任何方法可以拿到。 看到有的人通過parent().html(),如果當前元素沒有兄弟元素還…

擁塞控制中的開環和閉環控制

擁塞控制是很難設計的,因為它是一個動態的問題,許多情況下,甚至正式擁塞控制機制本身成為引起網絡性能惡化甚至死鎖的原因。從控制理論的角度來看擁塞控制這個問題,可以分為開環控制和閉環控制兩種方法。開環控制就是在設計網絡時…

c語言編寫一個菜單系統_一招教你,輕松解決C語言編寫一個正整數的所有因子!...

這個實例是一個能提高分析能力的實例,這個實例主要用到for語句,關鍵是如何確定其中變量的范圍。求一個正整數的所有因子先來看看編程結果演示:編程演示輸出結果編程如下:#include/*引用預處理命令,預處理包含stdio.h的頭文件*/mai…

【簡明筆記】循環條件的優化

[javascript] view plaincopy/* * 優化循環 */ //優化前 for(var i0; i < items.length; i){ //判斷條件&#xff1a;(1)i<items.length; (2)i<items.length true; process(items[i]); } //優化后 var count items.length; //把length屬性放在局…

ubuntu18.04安裝mysql數據庫

mysql安裝參考&#xff1a; https://www.cnblogs.com/opsprobe/p/9126864.html 文中寫的很詳細&#xff0c;但是未進行初始密碼的修改&#xff0c;初始密碼修改參考文章&#xff1a; https://blog.csdn.net/qq_38737992/article/details/81090373

第四次Scrum編碼沖刺!!!!

第四次Scrum編碼沖刺&#xff01;&#xff01;&#xff01;&#xff01; 一、總體任務&#xff1a; 本次沖刺是完成對圖書館管理系統的最后三個功能的實現------管理員對用戶授權、用戶注銷和用戶查詢 二、個人任務及完成情況&#xff1a; 本人本次的任務是實現對刪除用戶功能以…

Spring Cloud Edgware新特性之八:Zuul回退的改進

為什么80%的碼農都做不了架構師&#xff1f;>>> Spring Cloud Edgware對Hystrix回退的邏輯進行了一些改進。本文將信息探討新舊版本的回退操作&#xff0c;并分析的原因及改進后的優勢。 Dalston及更低版本 對于Dalston及更低版本&#xff0c;要想為Zuul提供回退&a…

因特網 以太網 互聯網的含義及區別

互聯網是Internet的意譯&#xff0c;因特網是Internet的音譯&#xff0c;兩者是等同的&#xff0c;是一個全世界范圍的廣域網。目前應用最為廣泛的一類局域網是總線局域網-以太網。以太網的核心技術是它的隨機爭用型介質訪問控制方法&#xff0c;即帶有沖突檢測的載波偵聽多路訪…