美文网首页闲汪的微信学习笔记
微信订阅号如何进行网页授权?

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

作者: 闲汪 | 来源:发表于2019-07-11 16:07 被阅读0次

    一、背景

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

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

    微信开发嘛,第一步就是考虑网页授权登陆,之前就用测试号开发过,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

    <a href="地址?openId">展示给用户的消息</a>

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

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


    五、bug

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

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

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

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

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

    <a href="地址?o=openId">展示给用户的消息</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的,哈哈哈,总归是实现了。

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

    相关文章

      网友评论

        本文标题:微信订阅号如何进行网页授权?

        本文链接:https://www.haomeiwen.com/subject/xdfrkctx.html