解决微信OAuth2.0网页授权回调域名只能设置一个的问题4 J# r0 t# O" ^# @5 q: q
部署get-weixin-code.html至你的微信授权回调域名的目录下,例如http://wx.abc.com/get-weixin-code.html' X' {* L: y" {2 Y% L, G+ {
在其他页面的使用方式如下,类似于直接通过微信回调的方式,只是将回调地址改成了get-weixin-code.html的地址,另外省去了response_type参数(因为它只能为code)以及#wechat_redirect的hash,它们会在get-weixin-code.html里面去加上9 E z1 b( V. }0 {% o' E
location.href = 'http://wx.abc.com/get-weixin-code.html?appid=XXX&scope=XXX&state=XXX&redirect_uri=' + encodeURIComponent(location.href);) S8 o$ g$ x/ u! g0 m3 B: M' Q
get-weixin-code.html页面从微信那里拿到code之后会重新跳转回调用的页面,并且在url后面带上code
[, V) }& T! b/ a5 a) t! a5 Q4 O2 v
其他说明
! W, {) \1 ?7 O |通过多一次的跳转,解决了微信限制回调域名只能设置一个的问题/ a1 d6 c# r1 P+ L3 E! X# t
牺牲了一点用户体验,换来了项目部署的美感,不需要将各种项目都部署到一个域名下' s0 ^" u$ h+ \7 R7 h
如果你有这样的需求,可以使用本项目+ P* n- R3 C9 {
欢迎提交pull request3 e( t y* L0 m
很多朋友问我怎么支持第三方微信平台,这个需要对不同的第三方平台的授权方式有所了解,熟悉他们的授权方式,请求参数等。如果他们是通过在网站入口处的URL上进行授权的,那么可以使用本项目,将入口的URL改成上述的方式,如果他们是在流程中的某些页面去获取授权,那么是没法改变他们的获取地址的,所以本项目就不适用了
# U: f: c" R5 k! C$ x5 f
' W3 m+ o* ]) V( C3 W; e1 z相关资料:
! n) E2 G" o+ E, }, ~' L; E) Q$ m6 A* A* E7 c
1、https://github.com/HADB/GetWeixi ... et-weixin-code.html
* a Y0 b( e7 z3 \. Q' n4 M2、https://github.com/HADB/GetWeixinCode( v) Z2 a7 x) |" p$ }
& B7 R, e0 _" m) y, `- n6 { |