关于微信授权回调域名只能设置一个的解决办法
# GetWeixinCode
解决微信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后面带上`code`和`state`
## 详细示例
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`参数了
## 其他说明
- 通过多一次的跳转,解决了微信限制回调域名只能设置一个的问题
- 牺牲了一点用户体验,换来了项目部署的美感,不需要将各种项目都部署到一个域名下
**建议先弄懂微信授权回调的流程再使用本项目
以下是get-weixin-code.html 的代码:
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>微信登录</title>
</head><body><script>var GWC = {version: '1.2.0',urlParams: {},appendParams: function (url, params) {if (params) {var baseWithSearch = url.split('#')[0];var hash = url.split('#')[1];for (var key in params) {var attrValue = params[key];if (attrValue !== undefined) {var newParam = key + "=" + attrValue;if (baseWithSearch.indexOf('?') > 0) {var oldParamReg = new RegExp('^' + key + '=[-%.!~*\'\(\)\\w]*', 'g');if (oldParamReg.test(baseWithSearch)) {baseWithSearch = baseWithSearch.replace(oldParamReg, newParam);} else {baseWithSearch += "&" + newParam;}} else {baseWithSearch += "?" + newParam;}}}if (hash) {url = baseWithSearch + '#' + hash;} else {url = baseWithSearch;}}return url;},getUrlParams: function () {var pairs = location.search.substring(1).split('&');for (var i = 0; i < pairs.length; i++) {var pos = pairs[i].indexOf('=');if (pos === -1) {continue;}GWC.urlParams[pairs[i].substring(0, pos)] = decodeURIComponent(pairs[i].substring(pos + 1));}},doRedirect: function () {var code = GWC.urlParams['code'];var appId = GWC.urlParams['appid'];var scope = GWC.urlParams['scope'] || 'snsapi_base';var state = GWC.urlParams['state'];var isMp = GWC.urlParams['isMp']; //isMp为true时使用开放平台作授权登录,false为网页扫码登录var baseUrl;var redirectUri;if (!code) {baseUrl = "https://open.weixin.qq.com/connect/oauth2/authorize#wechat_redirect";if (scope == 'snsapi_login' && !isMp) {baseUrl = "https://open.weixin.qq.com/connect/qrconnect";}//第一步,没有拿到code,跳转至微信授权页面获取coderedirectUri = GWC.appendParams(baseUrl, {'appid': appId,'redirect_uri': encodeURIComponent(location.href),'response_type': 'code','scope': scope,'state': state,});} else {//第二步,从微信授权页面跳转回来,已经获取到了code,再次跳转到实际所需页面redirectUri = GWC.appendParams(GWC.urlParams['redirect_uri'], {'code': code,'state': state});}location.href = redirectUri;}};GWC.getUrlParams();GWC.doRedirect();</script>
</body></html>
关于微信授权回调域名只能设置一个的解决办法相关推荐
- 网页授权域名需要加html,如何解决微信网页授权回调域名只能设置一个
问题 在实际的需求中,我们常常遇到多个部署在不同域名下的业务,想使用同一个「微信服务号」进行微信网页授权.但是微信的网页授权只能设置一个回调地址.为了满足业务需求,有人想到给每个业务部门配置一个微信服 ...
- 解决微信服务号授权域名不够用,微信网页授权回调域名只能设置2个的问题!
前言 最近在做微信网页项目时,发现服务号授权域名只能有两个,而多个项目都需要用到微信授权获取用户信息,这就导致了域名不够用的问题.如果给每个项目都配一个服务号,这显然是不现实的,不仅需要成本而且很浪费 ...
- 企业微信应用设置可信域名_企业微信应用变更域名,可信域名只能设置一个导致原有推送的模板消息(旧域名)直接提示需使用应用可信域名...
事故过程: 域名从A变成B后,旧有的推送消息点击直接提示 [redirect_uri需要使用应用可信域名,原有的模板消息推送中带有旧的域名地址A], 而此时,企业微信管理后台该应用的可信域名已经变成了 ...
- 微信扫码登录只能填一个授权回调域问题
背景 公司增加了个微信扫码登录,费劲千辛万苦终于把应用申请下来了,但遇到了一个头疼的事情:微信授权回调域只能写一个,且不支持通配.这下可好了,总不能把每个需要微信登录的二级域名都申请一个应用吧?而且一 ...
- 微信公众号开发 授权回调域名 微信授权验证
问题: 配置了微信后台的授权回调域名还是没有通过微信验证,即出现 微信验证步骤: 1.通过一个链接A(www.xxx.com?str=xxxxxxxx)进入微信验证 2.因为链接不存在微信的code, ...
- 微信登录失败——授权回调域名校验出错,错误码:10003原因及解决办法
配置文件这个路径是对应的微信端页面和JS相关的域名:不是后台的域名,对于前后端完全分离有不同域名的,要分清了: 微信授权回调页面域名和JAVA后台配置文件中的域名不一致,会导致微信登录失败--授权回调 ...
- 微信公众号开发redirect_uri 参数错误 的解决办法,Oauth2授权重定向域名参数错误解决办法
问题概述 关于这个问题,博主是在进行微信公众号开发过程中获取微信公众号CODE用于下一步验证获取openid和access_token时遇到的, 回调地址: " https://open.w ...
- 发现网站被劫持该怎么办?网站域名劫持的情况及解决办法
什么是网站劫持? 网站劫持是指本想打开某个网站的时候,却被拦截跳转到另一个网站页面,或者出现一个不属于此网站的广告. 网络劫持有什么危害? 1.用户输入网址后却跳转到其他页面,用户无法正常访问,从而导 ...
- 微信收到消息很慢无法连接服务器,微信消息延迟几分钟才收到 微信收消息有延迟的原因及解决办法...
微信收到消息总是延迟怎么回事呢?第一个就是网络延迟,第二个是手机信号不好,第三个就是微信自己设置的问题.下面,我们来看看微信收消息有延迟的原因及解决办法. 微信消息延迟几分钟才收到怎么回事 一.网络延 ...
最新文章
- 2017年英特尔在其数据中心业务和AI方面下大注
- 购买阿里云服务器地域如何选择?
- Move from SQL to SOQL
- mysql语句orderby_mysql中的orderby_MySQL
- 阿里DataV案例:制作实时销售大屏流程
- 经典C语言程序100例之三九
- .process和ProcessFunction(没有整理完)
- qt android程序联网死机,qt android开发出现致命错误
- 视觉SLAM十四讲学习笔记-第七讲-视觉里程计-对极几何和对极约束、本质矩阵、基础矩阵
- 神似华为Mate20!金立手机也开始复刻了...
- 《深度学习笔记》——训练加速篇
- 【linux系统学习笔记】Ubuntu文本界面和图像界面的切换
- paip.提升用户体验----c++ c# 配色方案
- WinRar注册机或注册码
- 关于DSP数字信号处理技术
- 看Spring实战有感(一)
- Valine魔改教程——添加自定义表情和QQ头像
- 利用CSS3实现图片3D旋转
- 自强不息,厚德载物——2021年年度总结
- 英伟达Flex-unity插件