解決微信OAuth2.0網頁授權只能設定一個回呼網域的問題
最近發現微信公眾號的網頁授權網域已經支援配置多個,目前該專案的存在意義沒有之前強烈了。目前唯一的用處就是多個網域可以統一在一個地方處理。
部署get-weixin-code.html
至你的微信授權回呼網域的目錄下
使用方式類似於直接透過微信回呼的方式,只是將回呼位址改成了get-weixin-code.html
所在的位址,另外省去了response_type
參數(因為它只能為code
)以及#wechat_redirect
(它是固定的),它們會在get-weixin-code.html
裡面自己加上
get-weixin-code.html
頁面從微信拿到code之後會重新跳到redirect_uri
裡面填寫的url,並且在url後面帶上code
和state
前往微信公眾平台->介面權限->網頁授權取得使用者基本資訊->修改,填寫授權回呼頁面域名,例如www.abc.com
在www.abc.com
網域下部署get-weixin-code.html
,不一定是根目錄,例如: http://www.abc.com/xxx/get-weixin-code.html
假設你的http://www.xyz.com/hello-world.html
這個頁面需要取得微信授權,那麼你應該使用以下網址來取得授權:http: 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
這樣最後就會跳到這樣一個位址: http://www.xyz.com/hello-world.html?code=XXXXXXXXXXXXXXXXX&state=hello-world
://www.xyz.com/hello-world.html?code=XXXXXXXXXXXXXXXXX&state=hello-world ,從而你就拿到了授權code
以及自訂的state
參數了
感謝以下朋友為本項目提供的貢獻(排名不分先後)
star769706697
davidqhr
tianhe1986
AnthonyHuang001
sanzhumu
q250305917
kisChang
EasonShen1989
透過多一次的跳轉,解決了微信限制回呼域名只能設定一個的問題
犧牲了一點使用者體驗,換來了專案部署的美感,不需要將各種專案部署到一個網域下
如果你有這樣的需求,可以使用本項目
歡迎提交pull request
建議先弄清楚微信授權回呼的流程再使用本項目
很多朋友問我怎麼支援第三方微信平台,這個需要對不同的第三方平台的授權方式有所了解,熟悉他們的授權方式,請求參數等。如果他們是透過在網站入口處的URL上進行授權的,那麼可以使用本項目,將入口的URL改成上述的方式,如果他們是在流程中的某些頁面去獲取授權,那麼是沒法改變他們的獲取地址的,所以本項目就不適用了