位置: 编程技术 - 正文

解决微信授权回调页面域名只能设置一个的问题(解决微信授权回复的方法)

编辑:rootadmin

推荐整理分享解决微信授权回调页面域名只能设置一个的问题(解决微信授权回复的方法),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:解决微信授权回复问题,微信授权怎么回事,微信授权失败怎么办?微信授权失败解决方法,微信授权已失效怎么办,微信授权已失效,请关闭重新打开是什么意思,解决微信授权回复的方法,解决微信授权回复的方法,解决微信授权回复的方法,内容如对您有帮助,希望把文章链接给更多的朋友!

最终的解决方案是: 用户从我们的应用触发需要授权的操作,比如点击微信登录;

2. 应用收到这种用户请求后,将用户重定向到微信提供的一个授权页面:

3. 用户通过微信扫码(PC端授权,上边左图)或者点击确认按钮(移动端授权,上边右图)告知微信,授权应用访问自己的微信账号信息;

4. 微信收到用户的授权许可后,生成授权码,并把它作为参数回调至应用的某个页面;

5. 应用的回调页面在接收到微信的回调请求后,拿到其中的授权码,并通过微信官方提供的access token api接口获取access token;

6. 最后通过access token以及微信官方提供的另一个userinfo api接口就能获取到用户的微信账号信息。

为了实现这个过程,首先要为应用申请一个微信公众号,并将应用最终部署的域名设置到微信公众号设置里面的授权回调页面域名这个选项里面。微信官方对这个选项的说明如下:

关于网页授权回调域名的说明

1、在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的“开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置选项中,修改授权回调域名。请注意,这里填写的是域名(是一个字符串),而不是URL,因此请勿加 等协议头;

2、授权回调域名配置规范为全域名,比如需要网页授权的域名为:www.qq.com,配置以后此域名下面的页面 、 都可以进行OAuth2.0鉴权。但 、 、 部署常规业务;

trade.your.com 部署交易管理的业务;

passport.your.com 部署登录注册的业务;

解决微信授权回调页面域名只能设置一个的问题(解决微信授权回复的方法)

在这种模式下,如果集成微信登录和微信支付,前面说的授权回调页面域名的规则就会给应用带来问题。在这里:至少可以确认trade.your.com和passport.your.com都需要前面的介绍的用户微信授权,但是它们是两个不同的子域名,而且我们只有一个公众号;根据授权回调页面域名的原则,它只能用一个域名,并且只有回调地址的域名与该设置完全相同,才能成功发起微信授权,否则就会提示rediret_uri参数错误或者引发无法回调的问题。

那么这种情况该如何处理?

当下的解决方案是引入一个新的非常简单的应用来作为微信授权的代理服务,可以这么做:

1. 把公众号的网页授权接口域名设置成另外一个子域名,如proxy.your.com;

2. 然后把php_weixin_proxy里面的index.php部署到proxy.your.com

php_weixin_proxy下的index.php是一个很简单的php文件,你可以直接查看源码了解它的实现方式。因为当前项目的环境,我采用php来完成这个代理服务实现,实际上,你完全可以用任意平台语言来完成类似的功能。

当其它业务需要发起微信授权时,将授权请求先发到proxy.your.com,然后proxy.your.com会把这个请求转发到微信;

当用户同意授权后,proxy.your.com会收到微信的授权回调,并把回调结果(code、state参数)原封不动地再返回给最开始发起授权的业务。

唯一的区别在于,在不使用proxy.your.com的时候,你从应用发起微信授权的链接应该是这样的:

后面的链接中的host变成了proxy.your.com,也就是代理的授权回调域名;

2. 后面的多了一个device参数,这个是必要的。因为微信pc端跟移动端的授权地址是不一样的,而后面的链接是发送个proxy.your.com的,所以需要多加个参数告诉它在转发给授权申请给微信的时候,是用PC端还是移动端的授权地址。

整体方案思路:

小结:

这个方案我测试过,是行的通的。虽然说引入了代理服务,增加了一次重定向操作,不过由于这个授权请求并不是所有请求都需要,所以实际上也不会对用户体验产生多大的影响,但是从架构上来说,它的好处很明显,能够配合着应用的拆分逻辑,集成同一个公众号的登录及支付功能,不必为每个子应用都单独申请一个公众号来开发了(这种方式从业务上来说也不合理,一个公司哪需要运营那么多公众号)。

标签: 解决微信授权回复的方法

本文链接地址:https://www.jiuchutong.com/biancheng/296360.html 转载请保留说明!

上一篇:php异步:在php中使用fsockopen curl实现类似异步处理的功能方法(php guzzle 异步)

下一篇:简单谈谈PHP中的Reload操作(简述php的概念和特点)

  • 分公司的企业所得税税率是多少
  • 增值税专用发票丢失了要怎么处理
  • 固定资产进项税怎么入账
  • 资本公积不足冲减是什么意思
  • 劳务报酬收入是否含税
  • 利润表季报的本期金额是本年累计吗
  • 个人向公司账户存款
  • 小微企业季报
  • 行政事业单位暂付款无法收回该怎么处理
  • 增值税进项税转出所得税调整吗
  • 流动资产短期借款
  • 小规模没有进项可以开发票吗
  • 公司投资控股其他公司如何做账务处理
  • 内含增长率的推导
  • 怎么调整应收账款账龄
  • 发票税表抵扣了账务未抵扣账务处理怎么做?
  • 每月计提折旧
  • 进口货物付款计入哪个科目?
  • 有限合伙企业收益分配
  • 企业个人完税证明怎么开
  • 个体工商户年末计提的工资,次年怎么算
  • 新公司没业务怎么做账
  • "税务 政策"
  • 属于资金的筹资方式是
  • 发票密码区出来了一点
  • 土地闲置费能否扣除
  • 进口商品的关税计入入账价值吗
  • 天猫技术服务费什么时候返还
  • php支付接口开发
  • 临时 文件夹
  • 劳务资质办理需要什么条件
  • 医院装修设计费一般多少钱一平方
  • 航天信息服务费发票哪里打印
  • php文件扩展名是什么
  • 收到银行本票的账务处理
  • 工伤补贴由谁发放
  • 安全费用的适用范围
  • 待抵扣进项税额什么意思
  • 会计财务报表的编制步骤
  • 微信手机充值怎么自定义金额
  • php构造函数重载
  • 手工凭证三级明细
  • 不良品扣款范本
  • 以前年度损益调整结转到本年利润吗
  • 提取企业所得税怎么做会计科目
  • c语言printf输出数组
  • 企业收到收据老会计怎么入账
  • 一般纳税人在任何情形下都可以领购使用增值税专用发票
  • 年末未缴增值税应符合计算逻辑
  • 凭证类别的种类及限制条件
  • 递延所得税负债大白话解释
  • 银行定期存款取一部分怎么算利息
  • 资产减值损失的科目编码
  • 固定资产的原价减去预计净残值等于什么
  • 小规模企业税金怎么做账
  • 复利现值系数和复利终值系数
  • 现金日记账的登记规范及要求
  • 电子记录表怎么填写
  • 本月无进项发票需要去增值税发票认证平台吗
  • 客户逾期不付款,需要赔多少违约金
  • 会计账簿的种类包括总账明细账日记账和其他辅助性账簿
  • 限额领料单属于什么凭证多选题
  • sqlmd5加密后解密
  • tesmon.sys导致的蓝屏
  • vmwarevmx进程是干嘛的
  • Win8.1如何能将任意文件隐藏到普通图片中例如JPG图片
  • ubuntu20.4分区
  • win 7快速启动
  • win10重启更新的时候强制关机后会发生啥
  • 如何查看win7系统
  • jquery弹出框样式大全
  • unityui播放视频
  • jquery mobile开发工具
  • fragment中嵌套fragment
  • python连接mysql实例分享
  • javascript巧用eval函数组装表单输入项为json对象的方法
  • javascript学习指南
  • python抓视频保存本地
  • 南京国家税务局网上办税服务厅
  • 开税票锁机怎么办
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设