中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何解決微信授權回調頁面域名只能設置一個的問題

發布時間:2021-09-16 11:58:04 來源:億速云 閱讀:240 作者:柒染 欄目:開發技術

本篇文章給大家分享的是有關如何解決微信授權回調頁面域名只能設置一個的問題,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

在做項目集成微信登錄以及微信支付的時候,都需要進行用戶授權。這個授權的流程可以簡單描述為:

1. 用戶從我們的應用觸發需要授權的操作,比如點擊微信登錄;

2. 應用收到這種用戶請求后,將用戶重定向到微信提供的一個授權頁面:

如何解決微信授權回調頁面域名只能設置一個的問題如何解決微信授權回調頁面域名只能設置一個的問題

3. 用戶通過微信掃碼(PC端授權,上邊左圖)或者點擊確認按鈕(移動端授權,上邊右圖)告知微信,授權應用訪問自己的微信賬號信息;

4. 微信收到用戶的授權許可后,生成授權碼,并把它作為參數回調至應用的某個頁面;

5. 應用的回調頁面在接收到微信的回調請求后,拿到其中的授權碼,并通過微信官方提供的access token api接口獲取access token;

6. 最后通過access token以及微信官方提供的另一個userinfo api接口就能獲取到用戶的微信賬號信息。

為了實現這個過程,首先要為應用申請一個微信公眾號,并將應用最終部署的域名設置到微信公眾號設置里面的授權回調頁面域名這個選項里面。微信官方對這個選項的說明如下:

關于網頁授權回調域名的說明

1、在微信公眾號請求用戶網頁授權之前,開發者需要先到公眾平臺官網中的“開發 - 接口權限 - 網頁服務 - 網頁帳號 - 網頁授權獲取用戶基本信息”的配置選項中,修改授權回調域名。請注意,這里填寫的是域名(是一個字符串),而不是URL,因此請勿加 http:// 等協議頭;

2、授權回調域名配置規范為全域名,比如需要網頁授權的域名為:www.qq.com,配置以后此域名下面的頁面http://www.qq.com/music.html 、 http://www.qq.com/login.html 都可以進行OAuth3.0鑒權。但http://pay.qq.com 、 http://music.qq.com 、 http://qq.com無法進行OAuth3.0鑒權

3、如果公眾號登錄授權給了第三方開發者來進行管理,則不必做任何設置,由第三方代替公眾號實現網頁授權即可

由此可見,這個規則極其嚴格。如果說我們的應用最終部署的時候只有一個域名,那么這種規則不會有什么問題;但是考慮到將來應用的復雜性,我們可能在應用設計之初就會對應用做拆分,然后不同的業務采用不同的二級域名來部署。比如一個帶有交易的應用,你可能會把登錄注冊,交易管理和常規業務都獨立出來,然后采用以下的方式來部署它們:

www.your.com 部署常規業務;

trade.your.com 部署交易管理的業務;

passport.your.com 部署登錄注冊的業務;

在這種模式下,如果集成微信登錄和微信支付,前面說的授權回調頁面域名的規則就會給應用帶來問題。在這里:至少可以確認trade.your.com和passport.your.com都需要前面的介紹的用戶微信授權,但是它們是兩個不同的子域名,而且我們只有一個公眾號;根據授權回調頁面域名的原則,它只能用一個域名,并且只有回調地址的域名與該設置完全相同,才能成功發起微信授權,否則就會提示rediret_uri參數錯誤或者引發無法回調的問題。

那么這種情況該如何處理?

當下的解決方案是引入一個新的非常簡單的應用來作為微信授權的代理服務,可以這么做:

1. 把公眾號的網頁授權接口域名設置成另外一個子域名,如proxy.your.com;

2. 然后把php_weixin_proxy里面的index.php部署到proxy.your.com

php_weixin_proxy下的index.php是一個很簡單的php文件,你可以直接查看源碼了解它的實現方式。因為當前項目的環境,我采用php來完成這個代理服務實現,實際上,你完全可以用任意平臺語言來完成類似的功能。

當其它業務需要發起微信授權時,將授權請求先發到proxy.your.com,然后proxy.your.com會把這個請求轉發到微信;

當用戶同意授權后,proxy.your.com會收到微信的授權回調,并把回調結果(code、state參數)原封不動地再返回給最開始發起授權的業務。

唯一的區別在于,在不使用proxy.your.com的時候,你從應用發起微信授權的鏈接應該是這樣的:

https://open.weixin.qq.com/connect/qrconnect?appid=xxxxx&redirect_uri=http%3A%2F%2Fpassport.your.com%2F&response_type=code&scope=snsapi_login&state=584bc87e11ff37492#wechat_redirect

用了proxy.your.com之后,這個授權鏈接就應該是這樣的:

http://proxy.your.com/?appid=xxxxx&redirect_uri=http%3A%2F%2Fpassport.your.com%2Flogin%2Fnotify&response_type=code&scope=snsapi_base&state=584bc87e11ff37492&device=pc

后面這個鏈接跟上面的比:

1. 后面的鏈接中的host變成了proxy.your.com,也就是代理的授權回調域名;

2. 后面的多了一個device參數,這個是必要的。因為微信pc端跟移動端的授權地址是不一樣的,而后面的鏈接是發送個proxy.your.com的,所以需要多加個參數告訴它在轉發給授權申請給微信的時候,是用PC端還是移動端的授權地址。

如何解決微信授權回調頁面域名只能設置一個的問題

整體方案思路:

如何解決微信授權回調頁面域名只能設置一個的問題

以上就是如何解決微信授權回調頁面域名只能設置一個的問題,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

连山| 安乡县| 雅安市| 定陶县| 定结县| 抚宁县| 辛集市| 昭苏县| 个旧市| 常宁市| 内丘县| 营山县| 同江市| 台湾省| 惠来县| 同仁县| 昭平县| 华亭县| 泰州市| 平顶山市| 沙河市| 嘉兴市| 囊谦县| 大石桥市| 德兴市| 内乡县| 株洲市| 罗定市| 临朐县| 永兴县| 邵武市| 栾城县| 绵阳市| 青阳县| 长子县| 林周县| 信丰县| 故城县| 丰顺县| 文水县| 永安市|