支付宝扫码
领取余额宝体验金

轻云博客 > 微信小程序开发 > 微信公众号开发解决页面域名只能设置一个的问题

微信公众号开发解决页面域名只能设置一个的问题

作者:Aisencici / 日期:2018-3-20 12:23:00 / 分类:微信小程序开发 / 浏览:562

微信公众号开发解决页面域名只能设置一个的问题

本次项目开发中遇到一个问题,客户公众号微信登陆授权已被另外一个系统使用,微信后台网页授权域名只能填写一个,导致我的系统不能绑定。

所以想到2个解决方案,

一:在原项目下面新建子应用程序,但是还是存在问题,原项目使用的是MVC开发,子项目用的是webform ,配置好了总是继承父项目的路由一直显示404,由于原项目没有源码不能更改路由去接受webform的页面,所以放弃 

二:根据网上寻找的方案是:引入一个新的非常简单的应用来作为微信授权的代理服务

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

2. 然后把get_weixin_proxy里面的index.html部署到proxy.your.com

    get_weixin_proxy下的index.html是一个很简单的html文件,你可以直接查看源码了解它的实现方式。

    因为当前项目的环境,我采用html来完成这个代理服务实现,实际上,你完全可以用任意平台语言来完成类似的功能。

    当其它业务需要发起微信授权时,将授权请求先发到proxy.your.com,然后proxy.your.com会把这个请求转发到微信; 当用户同意授权后,proxy.your.com      会收到微      信的授权回调,并把回调结果(code、state参数)原封不动地再返回给最开始发起授权的业务。

    唯一的区别在于,在不使用proxy.your.com的时候,你从应用发起微信授权的链接应该是这样的: https://open.weixin.qq.com/connect/qrconnect?appid=xxxxx&redirect_uri=http%3A%2F%2Fpassport.your.com%2F&response_type=code&scope=snsapi_login&state=584bc87e11ff37492#wechat_redirect 用了proxy.your.com之后,这个授权链接就应该是这样的: http://proxy.your.com/?appid=xxxxx&redirect_uri=http%3A%2F%2Fpassport.your.com%2Flogin%2Fnotify&response_type=code&scope=snsapi_base&state=584bc87e11ff37492&device=pc 后面这个链接跟上面的比: 1. 后面的链接中的host变成了proxy.your.com,也就是代理的授权回调域名; 2. 后面的多了一个device参数,这个是必要的。因为微信pc端跟移动端的授权地址是不一样的,而后面的链接是发送个proxy.your.com的,所以需要多加个参数告诉它在转发给授权申请给微信的时候,是用PC端还是移动端的授权地址。

整体方案都设计好后,发现还是运行不了,中间始终无法获取access_token,又去检查客户公众号的配置,发现IP白名单没有绑定,重新绑定后调用成功。成功解决了本次的需求。

本文标签:
From:
分享到: