微信订阅号如何进行网页授权?

您所在的位置:网站首页 公司订阅号怎么登录 微信订阅号如何进行网页授权?

微信订阅号如何进行网页授权?

2024-07-09 01:40| 来源: 网络整理| 查看: 265

一、背景

最近公司在做微信公众号开发,由于业务需要,公司选择了订阅号用于每天发推送,又有一些小功能需要做二次开发

众所周知,公众号分两种:订阅号服务号,两者的微信权限是不一样的:

微信开发嘛,第一步就是考虑网页授权登陆,之前就用测试号开发过,so easy~

二、正常流程

正常微信网页授权流程是这样的:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842

官网步骤讲解的很清楚,有问题的同学可以私信或者留言与我讨论,这里不多说

结果。。。

惊了,啥情况?咋整啊?大佬帮帮我啊!

三、变通的思路

想想有没有什么变通的做法,和服务端同学研究了一下

在微信公众号管理后台的 开发 - 基本配置 里开启服务器配置

这样就不可以通过微信后台配置子菜单,而只能通过服务端代码配置

发现服务端同学可以在用户 关注订阅号 的时候,获取到 用户openId , 用openId向微信服务器发送请求获取用户信息

服务端同学请参考:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140839

这样就完成了 注册

第一步解决了,数据库里已经有了这个用户的记录

在用户进行和订阅号交互的时候,例如 子菜单的点击事件 ,服务端同学又可以获取到用户的 openId

openId也就是微信用户的唯一标识,它在数据库里,与我们自己appServer的用户uid是一一对应的

只要有这个openId我们就能够获取到用户信息了!

四、缺点

子菜单的事件有两类,view 和 click

view事件的话,可以跳转至页面,但没法获取用户openId

click事件,能获取用户openId,但没法跳转至页面

鱼和熊掌不可兼得,怎么办?

好吧,再妥协一下,click事件里,发送一条 自动回复消息 总行了吧

回复的消息是一个a标签,带一个参数:openId

展示给用户的消息

用户点击这条消息就可以跳转至我们的配置好的页面了

我们判断本地是否有用户信息,没有的话走一个接口用openId跟服务端交换用户信息就好啦

五、bug

网页上测试没啥问题,绑定到微信上,接口走不通了

把链接复制出来,发现链接结尾总会多一个=号

百度了一下,好像没有哪位同学遇到和我一样的问题,尴尬!!!

猜测一下,能加等号的无非就是参数问题

麻烦服务端同学帮我把上面的a标签改为:

展示给用户的消息

然后获取这个openId,问题果然解决了

猜测是微信会把之前的openId认为是key,而认为它的value为空,所以默认加一个=

还是不能偷懒,该咋写咋写

关于如何获取url上的参数,给同学们推荐:https://www.cnblogs.com/suyuanli/p/8046783.html

六、反思和优化

以上的流程变相的为订阅号做到了微信网页授权,但是有几个问题:

1、用户不能够点击子菜单直接跳转至相应页面,需要多一次点击的用户行为,从产品角度,不是很合理

听说可以把a标签改成图文消息的模式,可能这样能够稍微挽回一点用户体验,但是根本问题没有解决

2、openId直接暴露在url中,可能会有一些安全隐患、

可能openId加密处理一下会少好一些,同时获取用户信息后一定要叫叫服务端同学返回鉴权的token

3、获取用户信息的方式类似于 静默授权 的模式,用户信息不知不觉的被拿到,可能产生反感

解决的话:做一个假的授权dialog?233333~

七、结语

以上方式就可以变通的进行微信订阅号的网页授权,可能是是个人技术限制,总感觉这个方法low low的,哈哈哈,总归是实现了。

希望这篇文章能够帮助同学们成功爬坑,如果对您有所帮助,请关注、点赞并收藏,有其他问题也可以留言或私信,欢迎讨论!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3