微信公众平台解除绑定账号绑定的实现

微信公众平台 绑定微信用户OpenID与第三方业务账号
转自:&&(原作者的思路蛮清晰的,赞一个!)
最近由于工作需要,接触了微信公众号的开发。业务上要求绑定微信用户和系统用户,以便用户在一次绑定后能够通过系统用户的身份去使用一些功能。我关注的招行信用卡公众号实现了这个功能,所以估计还是可行的,在网上搜索了一下,发现这个问题没什么好的答案,很多都说取不到微信用户名实现不了,甚至有说实现了这个功能的应该是与微信有内部合作的。
搜索无果,遂自己动手实验,后发现其实完全可以的,看来实践才是检验真理的唯一标准,方案上也很简单,我分几点来说。
用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的信息。
绑定流程的详细描述
我在上面说了基本方法,但不够详细,导致一些新手朋友还是不清楚具体如何操作,所以我在此尝试更加详细地描述整个过程的每一步:
数据库中建立用户OpenID和系统用户的绑定关系表,初始时为空。
用户和微信交互时(self:通过点击自定义菜单ClickButton触发),你可以取到用户的OpenID。
检查数据表,如发现该OpenID没有绑定系统用户,则返回一个链接供用户在微信内嵌浏览器中打开,这个链接打开后类似于系统用户登录界面。
关键是链接的生成,链接需要带3个url参数:
1. 用户OpenID:因为你需要在绑定页面中取到是哪个微信用户想要绑定系统用户。
2. 时间戳timestamp:这是为了防止链接泄漏出去被恶意利用,具体来说就是一个你指定的过期时间,超过这个时间这个链接就失效了,用户只能再次获取。
3. 签名signature:这是为了保证此验证链接只有你才可能生成,用户及第三方均无法伪造。
签名的生成需要你有一个只有你知道的token(密钥,不要与设置在公众号里面的token相同),生成签名方法和类似。流程如下:
1. 将token、OpenID、timestamp三个参数进行字典序排序。
2. 将三个参数字符串拼接成一个字符串进行sha1加密,得到链接的signature参数。
用户打开某个绑定链接时,你首先验证链接的有效性,即按上述5.1和5.2中描述的同样的步骤得到signature与参数中的sinature对比,如果相同,则再检查链接是否超时(self:个人认为,检验是否超时作为第一步更合适),两步验证均通过,你就可以将用户的微信OpenID设置到用户的session中,然后你就可以渲染验证页面(jQuery Mobile),让用户输入其系统用户名和密码以提交给你服务器进行验证。
在用户提交绑定验证请求后,你只需要检查session中有没有你设置的OpenID,没有自然无效,有的话就是要绑定的OpenID了,此时你可以把这个OpenID从session中删除了。然后你如果验证系统用户名和密码通过后,就把这个OpenID和系统用户绑定起来,加入到第1步中说的绑定关系表中。
PS by self &(个人愚见):这个绑定的思路和微信本身提供的OAuth2.0绑定(参考&)异曲同工,只不过这个banding关系的维护在平台业务方,而不在微信方,在平台业务方维护绑定关系在实际开发中扩展性更好,至少本人选择如斯 :)&
本分类共有文章131篇,更多信息详见
& 2012 - 2014 &
&All Rights Reserved. &
/*爱悠闲图+*/
var cpro_id = "u1888441";
/*爱悠闲底部960*75*/
var cpro_id = "u1888128";&&国之画&&&& &&&&
版权所有 京ICP备号-2
迷上了代码!微信第三方平台:柳叶自媒体
柳叶网用户帮助中心
如何绑定公众账号?
为什么要绑定微信公众号?自媒体用户在未绑定微信公众号状态下,除了在未登录状态下可浏览的公共区域,以及账户登录后文章管理的少部分功能外,其他功能均无法使用。如果点选这些功能,都会出现绑定微信公众号的提示框。&什么是绑定的普通模式?绑定的普通模式是指:用户在本平台绑定其微信号,但不提供微信公众平台密码。这类用户不能享受增强服务。(如定时推送信息等功能)受增强服务功能。(如定时推送微信公众号回复消息等)绑定流程:1、柳叶平台绑定账号——绑定微信公众号——普通绑定填写相关内容——下一步。&(注:上传图片时,控制图片大小在200k)2、微信公众平台——开发者中心——服务器配置——启用。&&什么是绑定的高级模式?绑定的高级模式是指:用户在本平台绑定其微信号,并提供账户在微信公众平台登录的微信号密码。绑定高级模式的自媒体用户,可享受增强服务功能。(如:一健导入微信平台所有文章,定时推送微信公众号回复消息等)需填写信息:微信公众平台微信公众号名称、微信号和微信号密码。此密码只用于帮助用户通过平台在后台实现一些原本需要用户手动登录微信公众平台才能实现的功能,本平台不会记录和查看用户的账户密码。&绑定流程:1、微信公众平台——开发者中心——服务器配置——启用&&2、微信公众平台——安全中心——风险操作保护——登录——关闭&&&&3、柳叶平台绑定账号——绑定微信公众号&(注:上传图片时,控制图片大小在200k)4、柳叶平台——勾选红色箭头指向的【高级绑定】按钮& & &5、填写【公众账号微信号】此处应填写微信公众号的微信号,不是微信公众号的名称6、填写【密码】a:此处填写的密码是登录微信公众平台的密码,不是柳叶注册密码b:此密码只用于帮助用户通过平台在后台实现一些原本需要用户手动登录微信公众平台才能实现的功能,本平台不会记录和查看用户的账户密码。7、填写【AppSecret(应用密钥)】a:应用密钥在微信公众平台——开发者中心——开发者IDb:此处应用密钥空白,则不能享受微信菜单功能。8、点击保存按钮& & 这篇文章主要介绍了微信公众平台成为开发者与微信平台绑定微信公众账号的方法,需要的朋友可以参考下& & 先申请微信公众平台的账号& & 1.https://mp.在注册上一个账号,邮箱和密码自己可以设置,具体申请的步骤不再一一详细说明,这个审核过程打大概是1-24小时;& & 2.登录后选择左侧的功能&&高级功能&&我们需要先关闭编辑模式。点击编辑模式进入,把右上角的编辑模式关闭&&再推倒选择页面点击进入开发模式;& & & & 3.点击进入之后,弹出URL和Token填写框,这里一般程序或者平台都提供,这里以我们发布的微信管家为例,登录会员中心就可以看到URL和Token;& & & & 4.将URL和Token分别录入到微信公众平台上,提交后提示你已成为开发者。& & 5.再滑动右上角的启用按钮,这样开启开发模式。
声明:该文章系网友上传分享,此内容仅代表网友个人经验或观点,不代表本网站立场和观点;若未进行原创声明,则表明该文章系转载自互联网;若该文章内容涉嫌侵权,请及时向
上一篇:下一篇:
相关经验教程
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益

我要回帖

更多关于 微信公众账号解除绑定 的文章

 

随机推荐