1. 程式人生 > >解決微信OAuth2.0網頁授權只能設定一個回撥域名的問題

解決微信OAuth2.0網頁授權只能設定一個回撥域名的問題

使用方法

  1. 部署get-weixin-code.html至你的微信授權回撥域名的目錄下

  2. 使用方式類似於直接通過微信回撥的方式,只是將回調地址改成了get-weixin-code.html所在的地址,另外省去了response_type引數(因為它只能為code)以及#wechat_redirect(它是固定的),它們會在get-weixin-code.html裡面自己加上

  3. get-weixin-code.html頁面從微信那裡拿到code之後會重新跳轉回redirect_uri裡面填寫的url,並且在url後面帶上codestate

詳細示例

  1. 前往微信公眾平臺->介面許可權->網頁授權獲取使用者基本資訊->修改,填寫授權回撥頁面域名,例如www.abc.com

  2. www.abc.com域名下部署get-weixin-code.html,不一定是根目錄,例如:http://www.abc.com/xxx/get-weixin-code.html

  3. 假設你的http://www.xyz.com/hello-world.html這個頁面需要獲取微信授權,那麼你應該使用以下地址來獲取授權:http://www.abc.com/xxx/get-weixin-code.html?appid=XXXX&scope=snsapi_base&state=hello-world&redirect_uri=http%3A%2F%2Fwww.xyz.com%2Fhello-world.html

  4. 這樣最終就會跳轉到這樣一個地址:http://www.xyz.com/hello-world.html?code=XXXXXXXXXXXXXXXXX&state=hello-world,從而你就拿到了授權code以及自定義的state引數了

其他說明

  • 通過多一次的跳轉,解決了微信限制回撥域名只能設定一個的問題

  • 犧牲了一點使用者體驗,換來了專案部署的美感,不需要將各種專案都部署到一個域名下

  • 如果你有這樣的需求,可以使用本專案

  • 歡迎提交pull request

  • 建議先弄懂微信授權回撥的流程再使用本專案

  • 很多朋友問我怎麼支援第三方微信平臺,這個需要對不同的第三方平臺的授權方式有所瞭解,熟悉他們的授權方式,請求引數等。如果他們是通過在網站入口處的URL上進行授權的,那麼可以使用本專案,將入口的URL改成上述的方式,如果他們是在流程中的某些頁面去獲取授權,那麼是沒法改變他們的獲取地址的,所以本專案就不適用了