最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2016年12月11日 16:12:19   作者:流云諸葛  
在做項目集成微信登錄以及微信支付的時候,都需要進行用戶授權。本文主要介紹了關于網(wǎng)頁授權回調域名的說明以及解決微信授權回調頁面域名只能設置一個問題的方案。需要的朋友可以參考借鑒

最終的解決方案是:https://github.com/liuyunzhuge/php_weixin_proxy,詳細的介紹請往下閱讀。

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

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

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

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

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

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

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

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

關于網(wǎng)頁授權回調域名的說明

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

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

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

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

www.your.com 部署常規(guī)業(yè)務;

trade.your.com 部署交易管理的業(yè)務;

passport.your.com 部署登錄注冊的業(yè)務;

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

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

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

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

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

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

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

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

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

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參數(shù),這個是必要的。因為微信pc端跟移動端的授權地址是不一樣的,而后面的鏈接是發(fā)送個proxy.your.com的,所以需要多加個參數(shù)告訴它在轉發(fā)給授權申請給微信的時候,是用PC端還是移動端的授權地址。

整體方案思路:

小結:

這個方案我測試過,是行的通的。雖然說引入了代理服務,增加了一次重定向操作,不過由于這個授權請求并不是所有請求都需要,所以實際上也不會對用戶體驗產生多大的影響,但是從架構上來說,它的好處很明顯,能夠配合著應用的拆分邏輯,集成同一個公眾號的登錄及支付功能,不必為每個子應用都單獨申請一個公眾號來開發(fā)了(這種方式從業(yè)務上來說也不合理,一個公司哪需要運營那么多公眾號)。

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!

相關文章

  • php實現(xiàn)比較全的數(shù)據(jù)庫操作類

    php實現(xiàn)比較全的數(shù)據(jù)庫操作類

    這篇文章主要介紹了php實現(xiàn)比較全的數(shù)據(jù)庫操作類,可實現(xiàn)基本的數(shù)據(jù)庫連接、執(zhí)行SQL語句及錯誤提示等相關技巧,需要的朋友可以參考下
    2015-06-06
  • PHP 網(wǎng)絡開發(fā)詳解之遠程文件包含漏洞

    PHP 網(wǎng)絡開發(fā)詳解之遠程文件包含漏洞

    由于PHP支持使用相同的函數(shù)(Function)對本地文件和遠程文件進行操作。因此,一些惡意用戶通過強行使網(wǎng)站上的PHP代碼(Code)包含自己的文件來實現(xiàn)執(zhí)行自己腳本的目的。
    2010-04-04
  • php多進程模擬并發(fā)事務產生的問題小結

    php多進程模擬并發(fā)事務產生的問題小結

    這篇文章主要給大家介紹了關于php多進程模擬并發(fā)事務產生的問題,文中通過示例代碼介紹的非常想吃詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-12-12
  • PHP+Mysql基于事務處理實現(xiàn)轉賬功能的方法

    PHP+Mysql基于事務處理實現(xiàn)轉賬功能的方法

    這篇文章主要介紹了PHP+Mysql基于事務處理實現(xiàn)轉賬功能的方法,實例分析了mysql事務處理的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • 非常全面的php日期時間運算匯總

    非常全面的php日期時間運算匯總

    這篇文章主要整理了關于php日期時間運算相關內容,涉及知識點較為全面,感興趣的小伙伴們可以參考一下
    2015-11-11
  • php截取html字符串及自動補全html標簽的方法

    php截取html字符串及自動補全html標簽的方法

    這篇文章主要介紹了php截取html字符串及自動補全html標簽的方法,是php對html操作非常實用的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-01-01
  • PHP重定向的3種方式

    PHP重定向的3種方式

    本文介紹了“PHP重定向的3種方式”,需要的朋友可以參考一下
    2013-03-03
  • PHP截取字符串substr()函數(shù)用法詳解

    PHP截取字符串substr()函數(shù)用法詳解

    PHP的substr()函數(shù)用于返回字符串的子串,它接受三個參數(shù):字符串本身,起始位置和所需的長度,本文主要給大家詳細介紹了PHP substr()函數(shù)的用使用方法,需要的朋友可以參考下
    2023-08-08
  • php實現(xiàn)對兩個數(shù)組進行減法操作的方法

    php實現(xiàn)對兩個數(shù)組進行減法操作的方法

    這篇文章主要介紹了php實現(xiàn)對兩個數(shù)組進行減法操作的方法,涉及php操作數(shù)組的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-04-04
  • PHP自動加載機制實例詳解

    PHP自動加載機制實例詳解

    這篇文章主要介紹了PHP自動加載機制,結合實例形式詳細分析了php自動加載機制的原理、實現(xiàn)方法及相關操作注意事項,需要的朋友可以參考下
    2018-06-06

最新評論

洱源县| 绥德县| 若羌县| 凤阳县| 永德县| 乃东县| 桑日县| 福贡县| 策勒县| 沐川县| 亚东县| 平果县| 青阳县| 宜春市| 永济市| 若尔盖县| 临夏县| 巫溪县| 当涂县| 泰州市| 长阳| 岑溪市| 鸡东县| 太保市| 聊城市| 云龙县| 新建县| 安多县| 枣强县| 余江县| 丹巴县| 达孜县| 和田县| 大石桥市| 美姑县| 永寿县| 汪清县| 隆子县| 奇台县| 乌鲁木齐县| 讷河市|