找回密码
 会员注册
查看: 958|回复: 0

解决微信服务号授权域名不够用,微信网页授权回调域名只能设置2个的问题

[复制链接]

1389

主题

5

回帖

496万

积分

管理员

积分
4962986
发表于 2021-6-2 10:56:36 | 显示全部楼层 |阅读模式

最近在做微信网页项目时,发现服务号授权域名只能有两个,而多个项目都需要用到微信授权获取用户信息,这就导致了域名不够用的问题。如果给每个项目都配一个服务号,这显然是不现实的,不仅需要成本而且很浪费资源。通过思考以及网络查找之后,总结出了以下方法:

通过中间页面代理获取微信授权code,然后跳转到对应需要使用授权的项目上



一、在已授权的域名目录下,添加授权代理中间页
在已授权的域名目录下(根目录,子目录都可以),添加授权代理的中间页B。假如页面A需要使用微信授权,而此时授权域名已经满了,不够用了。此时就到了授权代理中间页B出场了。

在页面A一加载时就跳转到中间页B,window.location.href = “中间页B”,需要注意的是,在中间页B中,里面的redirect_uri写的是上图中写的用于获取code后的页面==(其他网上的说法是,redirect_uri写的是需要授权的页面,而我尝试了之后,发现redirect_uri参数错误,估计是该域名没有授权的问题)==,所以需要用一个转发页代理,从而获取code。

二、在已授权的域名目录下,添加一个用于获取code之后转发的页面
在第一步,用户一打开页面A时,页面A就会跳转到中间页B,而此时就会询问用户是否授权(这里有分静默授权与非静默授权,具体自行查看微信开放文档),当用户允许授权时,页面就会跳转到redirect_uri所填写的回调地址,也就是我们第二步要添加的这个页面C;原理很简单,就是当从中间页B回调到页面C时,会自动附带上code,这样我们就能拿到code后,跳转回页面A,而此时页面A就可以拿到code,利用 code ,请求自己后端服务器,获取微信用户信息。

我这里用的是PHP,拿到code后,将code附带回页面A中(code直接附带在链接上,其实是不安全的,目前还没想到什么其他的方法,还请大佬指教!!!)。

三、弊端
使用中间页的方式,虽然多了一次请求。但是满足了多个域名使用同一个微信号进行网页授权。在实际的使用过程中,经测试,跳转都在毫秒级完成,用户几乎无感知。

但是,也有不足的地方。使用中间页后,当用户不想进行授权时,微信授权页不会自动关闭,而是停留在中间页。直接授权方式,却可以自动关闭授权流程,回到原位置(聊天窗口或朋友圈等)。

总结
通过自己摸索了一两天的时间,也看着官方文档以及网络查找的资料,一步一步去实现,还是挺简单的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-24 09:39 , Processed in 0.283470 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表