解决微信OAuth2.0网页授权回调域名只能设置一个的问题
% b% b4 K+ P7 E) M# v部署get-weixin-code.html至你的微信授权回调域名的目录下,例如http://wx.abc.com/get-weixin-code.html
- R& w0 I6 C2 ^$ V" ]) s1 s/ l在其他页面的使用方式如下,类似于直接通过微信回调的方式,只是将回调地址改成了get-weixin-code.html的地址,另外省去了response_type参数(因为它只能为code)以及#wechat_redirect的hash,它们会在get-weixin-code.html里面去加上
6 k. d5 ]9 L. r* r9 {0 Dlocation.href = 'http://wx.abc.com/get-weixin-code.html?appid=XXX&scope=XXX&state=XXX&redirect_uri=' + encodeURIComponent(location.href);" _; Z s+ i% Y$ J4 `: \6 h1 @2 A3 m
get-weixin-code.html页面从微信那里拿到code之后会重新跳转回调用的页面,并且在url后面带上code
! E# G) K+ {0 s7 T# O7 ?9 X! ~' R3 K0 t" U$ L0 i) @9 x
其他说明
& q# s% C# e/ ~/ _2 r, X+ m通过多一次的跳转,解决了微信限制回调域名只能设置一个的问题/ X( }; s# w. g& D0 Z+ H$ L O
牺牲了一点用户体验,换来了项目部署的美感,不需要将各种项目都部署到一个域名下/ @' N0 Z7 P: T3 h$ ]
如果你有这样的需求,可以使用本项目
1 I8 Z3 H, j3 _! W K/ Y6 i7 |欢迎提交pull request
! X# `9 ?7 o4 s% Z1 M) B, n. f很多朋友问我怎么支持第三方微信平台,这个需要对不同的第三方平台的授权方式有所了解,熟悉他们的授权方式,请求参数等。如果他们是通过在网站入口处的URL上进行授权的,那么可以使用本项目,将入口的URL改成上述的方式,如果他们是在流程中的某些页面去获取授权,那么是没法改变他们的获取地址的,所以本项目就不适用了
- N& f( {7 f; M2 _+ g1 T* O4 M8 M; o9 \( M% b
相关资料:
* N9 y% o$ l, _! \9 u; M9 |4 }9 S0 X: ?/ Z
1、https://github.com/HADB/GetWeixi ... et-weixin-code.html+ @+ ~5 w' T: j! X
2、https://github.com/HADB/GetWeixinCode
. ~4 d# x$ ~- y- p
: V/ l9 a/ Z( M$ L |