微信公众号开发模式之用户账号绑定

news/2024/11/8 5:36:24/

为什么80%的码农都做不了架构师?>>>   hot3.png

公司需要微信这个平台和用户交流,于是开始研究微信公众平台。微信公众平台分为两种模式,其一是编辑模式,比如用户发什么内容,你可以响应什么内容。另外一种便是开发模式,这个模式功能丰富,不仅仅可以获取到用户的基本信息,还能获取用户的地理位置以及其他功能。 本来准备自己来开发一套微信公众号后台,后来发现已经有相关的开源产品,使用过三四种,发现最好用的还是" 微擎",咱们 运维生存时间也不是替他打广告,确实比较好用,界面美观而且可以自己开发插件。不过呢,功能还是有些不足。 最近想研究微信怎么绑定网站的用户账号,类似招商银行那种,其实招商和微信是有深度合作,提供的接口也是很丰富,甚至他们网络都走专线。这不是我们这次要讲的重点,以下是来自网上的内容,有些道理。 最近由于工作需要,接触了微信公众号的开发。业务上要求绑定微信用户和系统用户,以便用户在一次绑定后能够通过系统用户的身份去使 用一些功能。我关注的招行信用卡公众号实现了这个功能,所以估计还是可行的,在网上搜索了一下,发现这个问题没什么好的答案,很多都说取不到微信用户名实 现不了,甚至有说实现了这个功能的应该是与微信有内部合作的。 搜索无果,遂自己动手实验,后发现其实完全可以的,看来实践才是检验真理的唯一标准,方案上也很简单,我分几点来说。 用OpenID绑定即可 微信接口中虽然没给用户的微信账号,但给了用户的OpenID,这个OpenID对一个公众号是唯一的,测试也证明不会改变,也就是说同一个微信号和同一个公众号交互,我们得到的OpenID是不会变的,因此,可以用OpenID作为微信用户的身份标识。 如何绑定 俗话说,没吃过猪肉还没见过猪跑。看招行信用卡公众号是如何做的,在微信里面给用户一个验证链接,用户点击链接,微信会用内嵌的浏览器打开这个链接,然后就是一般的网页登录验证界面,我们通过HTTP(S)获取用户输入的系统用户名与密码,验证通过后完成绑定。 具体如何生成链接和如何传递OpenID下面详述。 如何生成绑定链接 绑定涉及到用户的身份甚至利益,所以需要注意安全性。我们需要绑定的是OpenID和系统用户,系统用户名是用户直接在链接页面输入后通过 HTTP(S)传给我们的,这没有问题。OpenID对用户来说透明,用户不会传给我们,我们也只有在用户在微信中向公众号发消息时才可获得 OpenID,所以很明显,OpenID需要包含在生成的链接中,至于需不需要对OpenID作加密就看你自己了,我觉得这不重要,更为重要的是要在链接 中带上签名和加上时间戳。因为我们需要确认这个链接是由我们服务端生成的,用户自己或者其他人不能够伪造出这个链接,加上时间戳是为了给这个链接一个过期 时间,如果不限制过期时间,假设用户绑定后这个链接通过某种方式被别人知道,那么这个人就可以把自己的账号与用户的微信号绑定。所以我采取的方法是用 OpenID、过期时间再加上一个密钥生成签名,生成签名的方法和微信服务器接口验证时的签名方法类似(密钥最好另选一个只有自己知道的)。 如何传递OpenID 有了绑定链接,用户点了绑定链接,但这只是第一步,第二步我们需要在用户在链接页面提交登录请求后进行验证,OpenID怎么传到第二步中呢?有人 说了,这还不简单,在登录表单中加一个隐藏域放用户的OpenID一起提交给验证的Handler不就OK了,那我只能说很遗憾,你前面所做的安全工作都 白费了,一旦A用户的OpenID泄漏,B用户就可以把自己的账号与A用户的微信号绑定了。所以永远不要相信客户端提交的东西。我的方法是当用户点击生成 链接后,在链接页载入时,将OpenID存到session中,因为这个session是没法伪造的(cookie被盗除外),所以只有点击这个链接的用 户的session中才会有链接中包含的OpenID。 关于微信服务器签名多说一句 大家都知道微信公众号消息接口验证时微信会向我们服务器发一个GET请求,在其中带上只有我们和微信服务器知道的签名,我们在请求处理 Handler中会验证这个签名,这点大家无异议;消息接口验证通过后,微信就会把用户发的消息以POST的方式发给我们,很多人可能会在这里忽视对签名的检查,从而给恶意者伪造用户请求的机会。在微信以POST方式传递用户的消息时,仍然会将签名信息附在URL参数中,我们在处理每一个POST请求时, 第一步还是得像处理消息接口验证时一样,去对URL参数中的签名作验证,只有签名验证通过后才可去取POST的信息。 关于微信公众号用户账号绑定就是这么多,其实很容易实现,我在这里把我的方法和大家分享一下,老鸟可以忽略,主要是希望对新手有一些帮助。欢迎探讨,敬请轻拍。 参考资料 微擎:http://www.we7.cc 微信公众平台:http://mp.weixin.qq.com 转自: abyssly.com/ 2013/ 09/ 20/ wx_bind/(打不开,内容是从百度快照抠出来的) 站点:运维生存时间  网址: http://www.ttlsa.com/html/4004.html

转载于:https://my.oschina.net/766/blog/211187


http://www.ppmy.cn/news/234640.html

相关文章

手机上微信总是说无法连接服务器错误代码,微信登录失败怎么办|微信登录失败常见提示及处理方法...

微信登陆失败怎么办?很多朋友都遇到微信登陆失败的提示。极光小编为大家总结了微信登录失败常见提示及处理方法,希望对大家有帮助。 类别: 社交通讯 大小:185.7M 语言: 简体中文 微信登录失败常见提示及处理方法…

微信开发教程:用户账号绑定到微信公众号的方法分享

最近由于工作需要,接触了微信公众号的开发。业务上要求绑定微信用户和系统用户,以便用户在一次绑定后能够通过系统用户的身份去使用一些功能。我关注的招行信用卡公众号实现了这个功能,所以估计还是可行的,在网上搜索了一下&#…

微信京东手机怎么联系客服人工服务器,微信人工客服电话是多少?打不通怎么办?...

全网最新活动请看下方内容或右侧内容! --------------- 微信业务实在是太广泛了,不少孩子也喜欢拿大人的手机玩,可是玩着玩着可能就有一些游戏需要充值,孩子们不懂便充值了,这时就会急需要联系微信人工客服,那么人工客服电话是多少呢? 一般腾讯客服上班时间是9:00~22:00…

微信绑定用户

最近由于工作需要,接触了微信公众号的开发。业务上要求绑定微信用户和系统用户,以便用户在一次绑定后能够通过系统用户的身份去使用一些功能。我关注的招行信用卡公众号实现了这个功能,所以估计还是可行的,在网上搜索了一下&#…

微信支付被盗刷?微信:我们全赔!支付宝:我们秒赔!

在阅读今天这篇文章前,请允许我插播一件很重要的事。 最近,公众号改了推送规则,在“订阅号消息”里,不再按照时间顺序排列了,这就有可能导致你无法及时看到我们精心准备的内容。 如果你喜欢全栈技术的文章,…

微信公众平台 绑定微信用户OpenID与第三方业务账号

转自:http://www.abyssly.com/2013/09/20/wx_bind/ (原作者的思路蛮清晰的,赞一个!) 最近由于工作需要,接触了微信公众号的开发。业务上要求绑定微信用户和系统用户,以便用户在一次绑定后能够通…

如果手机被偷了,里面的微信和支付宝绑定了银行卡,该怎么办?

手机被偷了,第一时间不是想着报警,做好这五件小事,比报警管用100倍。 手机这个东西是目前普遍不能在普遍的东西了,基本上可以说是人手一机了,但几乎每个人也都有过手机丢失的经历,我不知道你们手机丢失以后…

微信登录服务器提示异地登录异常,最近QQ微信被异地登录怎么回事 收到微信异地登录的信息怎么办...

最近,你的微信或QQ有没有总是提示被异地登录呢?这个时候,该如何保护好自己的信息呢?小心不少人中招,为了以防万一,让我们来了解下本文提供的精彩内容吧! 最近QQ微信被异地登录怎么回事 微信支付…