手机版

微信微信官方账号用户与网站用户绑定解决方案分析

时间:2021-08-26 来源:互联网 编辑:宝哥软件园 浏览:

本文举例说明了微信微信官方账号用户与网站用户之间的绑定解决方案。分享给大家参考,如下:

现在很多网站都建立了完整的用户账号体系。基于该系统,扩展其他应用的用户非常方便。例如,使用微软的outlook帐户,您可以登录win8、登录微软的邮箱和登录skype。同样,一个苹果ID可以享受所有苹果服务。俗话说,账户无处不在。

对于企业来说,可能有产品线,比如网站、app、微信微信官方账号等。需要统一各个产品线的账户体系,实现处处用一个账户的目标。网站和app使用同一个账号,不需要做任何额外的工作。客户只要有用户名和密码就可以登录。至于微信微信官方账号,因为是基于微信公众平台的应用,需要遵守平台的规则,所以需要做一些额外的工作来达到账号互通的目的。

接下来我们来讨论一下如何无缝连接微信微信官方账号用户和网站用户的账号系统。

用户关注微信微信官方账号后,会有一些互动。在交互过程中,可能需要获取用户的身份信息(对应网站的账号信息),比如在微信官方账号下单、查询订单等。那么现在的问题是:我们如何为同一个用户建立微信微信官方账号用户(openid)和网站用户(userid)的对应关系?这个过程叫做绑定。

微信账号绑定

为了简化讨论,我总结了两种情况:

一是用户已注册为我们的网站用户,但尚未关注我们的微信微信官方账号;第二,用户没有注册,但是关注了我们的微信微信官方账号。

下面将分别讨论上述两种情况。

场景一

用户已注册为我们的网站用户,但尚未关注我们的微信微信官方账号。如何方便用户关注微信官方账号,同时将用户绑定到微信微信官方账号?想到二维码的入口是很自然的。

近年来,二维码得到了广泛的应用。微信对二维码的推广应用可以说如鱼得水,微信二维码支付、微信二维码登录、微信二维码名片等等。可以说,二维码已经成为O2O中线上和线下的重要纽带。马克还说‘二维码是线上线下的关键入口’。

这里要求用户先登录网站,然后在合适的地方给出绑定条目,比如个人设置。绑定过程如下:

微信账号绑定流程

这里需要用到微信的二维码生成功能:http://MP . weixin . QQ.com/wiki/18/28 fc 21e 7 ed 87 be 960651 f 0 ce 873 ef 8a . html。

关于微信二维码,官方文件这样说:

目前二维码有两种,即临时二维码和永久二维码。前者有失效时间,有效期为30天(2,592,000秒),但可以生成一个很大的数字,而后者没有失效时间,只有一个很小的数字(目前参数只支持1-100,000,即100,000)。两种二维码适用于账户绑定、用户来源统计等场景。

显然,我们使用临时二维码更合适。它可以在用户每次刷新页面时生成一次。

由于二维码可以包含场景值(scene_id),当用户扫描带有场景值的二维码时,微信服务器会将场景值推送到我们自己的服务器上。得到场景值后,可以做验证和绑定逻辑。注意:生成二维码需要认证的服务号。

一个完整的绑定过程应该是这样的:

用户登录网页,点击“绑定微信账号”;(2)后台使用微信界面,生成二维码链接返回前端显示,建立场景值A与用户的对应关系;3用户扫描二维码,点击微信微信官方账号(如果已经关注,直接跳转到4);4)后台接收微信服务器推送的场景值a;后台根据场景值A查询对应的用户ID(取决于中建立的对应关系);建立用户用户id与微信用户openid的对应关系;将“绑定成功”提示推送到用户微信客户端;通知前台页面绑定完成,刷新页面,返回部分微信账号信息。完成绑定。

其中,在“建立场景值A与用户的对应关系”中,由于用户已经登录,当用户点击“绑定微信账号”时,我们可以在后台分配场景值A与用户ID的临时对应关系。对于用户较少的网站,可以直接使用php中的apc进行缓存,并且可以设置一个过期时间(只需设置与临时二维码的过期时间相同即可)。不要用session来存储这个对应,因为是一个没有session信息的微信推送事件,可以用redis缓存或者DB来存储。此外,临时二维码的数量没有限制,只有时间限制,前台可以定期刷新。

由于http没有推送机制,最简单的方法就是轮询查询绑定是否已经完成,然后刷新页面。

绑定完成后,当用户与我们的微信微信官方账号交互时,可以根据openid找到对应的用户id,即完成身份识别。对于前面提到的下单和询价,可以实现。

整个绑定过程并不复杂,实现起来也没有太大的技术难度。最重要的是思考。

上述过程是用户已经登录网页,即用户已经注册。对于不登录的情况,我们也可以在登录页面创建一个二维码,让用户用微信扫描。如果用户已经注册,可以自动登录,完成网站账号和微信账号的绑定;如果用户没有注册,网页跳转到绑定账号的页面,只要用户输入邮箱密码快速注册,同时网站账号与微信用户的绑定也就完成了。技术方案与上述类似。

场景二,

场景二

,对于用户来说稍微有点复杂,因为它需要用户登录/注册微信客户端的网页。因此,如果注册过程过于复杂,不建议使用。

流程:

用户绑定帐户流程

上面的绑定过程集成了注册过程,所以看起来很复杂。实施起来并不太难。我们关注的是安全问题,因为绑定账号涉及到用户的信息安全。考虑两个问题:

1.如何防止链接被伪造

登录/注册链接需要我们自己的服务器生成,不能被别人伪造。可以参考微信验证服务器地址的有效性:

http://MP . weixin . QQ.com/wiki/17/2d 4265491 f 12608 CD 170 a 95559800 f2d . html。

所以相对安全的登录链接可以是这样的:

http://api.hello1010.com/wechat/login.html?OpenID=x1 signature=x2 timestamp=x3nonce=x4echostr=X5

验证签名的代码:

私有函数CheckSignature(){ $ open id=$ _ GET[' open id '];$ signature=$ _ GET[' signature '];$时间戳=$_GET['时间戳'];$ nonce=$ _ GET[' nonce '];$ token=TOKEN$tmpArr=array($token,$timestamp,$nonce,$ OpenID);sort($tmpArr,SORT _ STRING);$tmpStr=内爆($ TMParr);$ TMPstr=sha1($ TMPstr);if($tmpStr==$signature ){返回true} else { return false} }代币值可以和自己的微信微信官方账号后台相同,也可以更改。建议换到安全点。

2.如何确保openid值得信赖

考虑这个场景:A用户进入登录页面,将登录链接复制到浏览器,用B用户的openid替换openid,用A用户的账号密码登录。这样,用户a的userid和用户b的openid绑定在一起,显然是不安全的。

解决方案有很多,比如openid可以加密,加密方式保密时用户无法伪造加密的openid。如果不想加密openid,可以在生成链接时,在服务器端建立openid和签名的对应关系。如果用户篡改openid,就无法通过验证。

记住,永远不要相信客户发送的信息。

扩展应用

,我们可以做一些简单的应用。比如公司需要举办线下路演,需要签到。

这是一个典型的可以通过微信实现的O2O例子。流程如下:

线下路演的签到流程

其中“绑定用户子流程”是场景2中的流程。这里不描述注册的交互,每个业务都不一样。

对于已经完成绑定的用户,需要通过微信注册,然后扫描二维码进行登录。体验相当顺利。如果你有任何问题,请联系我!

更多对PHP相关内容感兴趣的读者可以查看本网站专题:《PHP微信开发技巧汇总》、《php curl用法总结》、《PHP网络编程技巧总结》、《php字符串(string)用法总结》、《PHP中json格式数据操作技巧汇总》、《PHP针对XML文件操作技巧总结》、0103010

希望本文对PHP编程有所帮助。

版权声明:微信微信官方账号用户与网站用户绑定解决方案分析是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。