刚打算写这篇文章,发现刚刚有人已经发布了,作者很给力,我说说我自己的经验,给需要帮助的人更多的参考吧。
在discuz的官网http://www.discuz.net/forum.php 有个很吸引的功能,微信账号登录。起初有很多人问过我怎么实现这个功能,我特意去查了微信的文档,微信官方其实是没有这个接口的。它与普通的oauth2.0授权不一样,这是跨客户端了。需要手机微信和PC浏览器相互配合才能完成,所以单纯的oauth2.0接口是做不到一键登录的。
好在有了需求就知道该往哪方面发展了,有可以研究的技术是一件很幸福的事。
大体流程:
没怎么使用过iteye,不知道怎么发图片,所以我用文字大体描述一下流程吧。
PC端生成随机参数 ---> 生成带参数的二维码(带上随机参数) ---> 启动轮询查询是否验证成功 --->
扫描二维码 ---> 微信服务器回调咱的验证地址 ---> 将验证结果放入数据库带上二维码中的随机参数 --- >
pc端轮询到结果,如果成功则登录 --- > 登录成功
实现步骤:
看上面的流程,估计不会的还是不会,因为讲的太笼统,但是我们要按照这个思路去实现功能。
1、生成随机数,var uuid;
2、生成二维码,因为二维码就是一个url,我们要做的就是把微信的oauth2.0认证地址加密成二维码,并且回调地址填写我们的服务器验证地址。
首先生成二维码,推荐前台生成,我使用的是jquery.qrcode.min.js,二维码的加密字符串为:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=xxxx&redirect_uri=http://服务器验证地址/" + uuid+"&response_type=code&scope=snsapi_userinfo&state=0#wechat_redirect
,建议使用网址缩短,不然生成的二维码太过密集影响使用。
3、显示二维码的时候同时启动轮询,带上uuid去后台验证是否登录成功,怎么登录请往下看。
4、微信扫描二维码后会调用我们指定的回调地址,并且回调地址中有UUID,上述地址跳转到我们action方法中时会有带上code参数(参考微信oauth2.0网页授权),根据code可以获取openId,也就可以判断用户是否存在了。如果用户存在,则将用户ID和UUID放入数据库表中(建议使用缓存,我使用的是mongodb),前台轮询时因为带上了uuid,后台根据UUID找到了验证后的用户ID,此时将需要的session信息初始化并且返回登录成功的标识到前台,前台接收到结果后进行跳转,到此微信登录完成。
思考:
为什么使用轮询,因为微信的认证已经脱离了PC客户端,故不能直接进行前后台交互。而如果不考虑兼容性问题,也可以使用websocket,原理是一样的。
微信登录可以说是一个高大上的功能,不需要输入繁琐的密码,轻轻一扫即可登录,对既有PC端又有微信端的网站用处很大,很值得一试。
如有不懂,请留言,我会努力解答。如果错误,欢迎指正。
转载请保留出处,尊重原创,
相关推荐
可以用这个类来编写微信PC客户端,完成微信消息收发。 void Attach(HWND hWnd); //设置关联窗口 HGLOBAL GetQRCode(); //得到登录二维码(内存) BOOL GetQRCode(LPCTSTR lpszPath); //得到登录二维码(文件) ...
微信PC版协议实现,本人亲自调试通过,不会出现1100的错误,值得你做二次开发: 1.获取服务器分配的一个唯一会话ID 2.通过会话ID获得随机登录二维码 3.轮询手机端是否已经扫描二维码并确认 4.访问登录地址,获得uin...
另外看微信开发文档中存在一个scan事件,可以检测用户使用微信扫描二维码并获取值。其实问题的关键就在于这个值,这个值算是一个联通PC和微信的通信ID了。 二、具体实现流程(下面代码使用了TP5的框架,有个大前提是...
微信支付,支付宝支付,PC扫描支付和手机支付 二、功能介绍 1、支持“支付宝”扫描支付和手机支付,只要把相关支付参数配置到程序里面,就可以正常使用支付; 2、支持“微信”扫描支付和公众号支付,只要把相关...
是一个csdn上的朋友的原创项目,原帖可以看这里http://blog.csdn.net/ericfantastic/article/details/49451249 实现了微信的登录注册、主界面、聊天会话、通讯录、发现界面、个人设置、添加好友、扫描二维码、视频...
PC网站场景:在网站中展示二维码,用户使用微信扫描二维码,输入需要支付的金额,完成支 付。 特点:用户在客户端输入支付金额 1.3、小程序支付 在微信小程序平台内实现支付的功能。 1.4、Native支付 Native支付是指...
等了好久,微信官方终于发布了.net的demo。 主要代码: /** * 生成直接支付url,支付url有效期为2小时,模式二 * @param productId 商品ID * @return 模式二URL */ public string GetPayUrl(string productId...
基于小程序页面授权,使用微信扫描PC端小程序码实现获取用户信息进行系统登录。 即:PC扫小程序码登录。 使用技术 vue:2.6.11 vuex:3.1.2 vue-router:3.1.5 element-ui:2.13.0 koa:2.11.0 小程序云开发 安装 web端 ...
微信PC版协议实现,本人亲自调试通过,可做二次开发: 1.获取服务器分配的一个唯一会话ID 2.通过会话ID获得随机登录二维码 3.轮询手机端是否已经扫描二维码并确认 4.访问登录地址,获得uin和sid
开发微信公众号时通过vue页面获取用户静默授权/非静默授权后的信息,整个一套代码全部嵌套在vue界面中。
PC电脑端+手机端版本,可以微信小程序。多用户多仓库,带扫描枪功能 本系统开发 PHP + MySQL pc端采用CI2.x框架,手机端采用的是laravel7.4 本系统运行环境 pc端php5.6 手机端php7.4 需要分别部署 手机端可...
前端技术:微信小程序和Vue作为前端技术,分别用于移动端和PC端的用户界面展示和交互。微信小程序可以实现扫描二维码即可使用,无需下载安装,方便快捷。Vue是一种轻量级的前端框架,具有简单易学、组件化开发等特点...
1.[新增]实现微信支付功能(微信公众号支付和微信扫描支付) 2.[新增]实现QQ账号登录 3.[优化]优化支付流程,支付时,可以选择不同的支付方式 4.[修复]修改翻译时间结果的错误 5.[优化]当频道很多是,修改频道变得很...
TPshop是用thinkphp开发的一款免费开源网店系统,适合企业及个人,包含(微信商城 ...6.PC端微信扫描登录; 7.添加预售功能; 8.添加申请提现在线转账;9.添加OSS云图片;10.添加小程序;11.升级api; 12.添加发票模块。
此外,其背后的开发团队持续迭代更新,根据用户反馈不断优化产品性能,提升服务质量,致力于打造一个贴近用户需求、充满活力的小程序生态。 总结来说,【小程序名称】凭借其小巧便携、快捷高效的特性,不仅节省了...
可应用在PC端、APP端、微信公众号等各种应用场景,用户可针对不用的应用场景,自主选择服务方向。 4、兼容性好,快票通系统兼容形变、褶皱、阴影等多种非正规图像。同时支持扫描仪、摄像头、高拍仪等各类图像采集...
2014.11.20:新增微信后台提供"粉丝删除"功能,在网站运营中如果出现在PC端删除会员后,无法再次注册的情况,可以完美的解决。 2014.11.19:手机会员中心新增“详细推荐信息”可以查看自己的下线和下线的下单情况...
基于开发, 本程序主要用于演示如何使用nano进行游戏服务器程序开发, 演示客户端下载地址:iOS:Android:Source Code: 微信群公告Prebuilt: 如果要连接自己的服务器简单模式: 使用PC客户端/Mac客户端(不支持微信登录, ...
【仿微信即时聊天】xmpp4Android 第一期.rar 串口开发的demo,里面包含JNI文件.rar 串口编程资料.rar 安卓蓝牙对战demo实例.rar 实现抖动窗口.rar 模拟Activity进出栈.zip 用Roboguice实现依赖注入-.zip 监听自身...
修复 简历详情页自动识别PC/触屏端 修复 触屏版链接错误问题 修复 企业刷新职位,微信付款后职位没有刷新问题 修复 后台‘安全设置’链接错误问题 修复 分站下部分服务器环境分页链接错误问题 修复 后台‘下载简历...