刚打算写这篇文章,发现刚刚有人已经发布了,作者很给力,我说说我自己的经验,给需要帮助的人更多的参考吧。
在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端又有微信端的网站用处很大,很值得一试。
如有不懂,请留言,我会努力解答。如果错误,欢迎指正。
转载请保留出处,尊重原创,
相关推荐
在IT行业中,微信扫描登录是一种常见的用户验证方式,尤其在PC端应用中,它为用户提供了一种便捷的登录体验。"PC端微信扫描登陆.zip"这个压缩包文件包含了一个适用于ECSHOP电商平台的插件,该插件使得用户可以通过...
" Ecshop微信支付pc端最新版 "意味着这个插件是针对Ecshop平台,用于在PC端集成微信支付功能的最新更新。 在电子商务领域,微信支付的PC端集成对于提升用户体验、促进销售具有重要意义。用户无需离开桌面浏览器,就...
微信PC版协议实现,本人亲自调试通过,不会出现1100的错误,值得你做二次开发: 1.获取服务器分配的一个唯一会话ID 2.通过会话ID获得随机登录二维码 3.轮询手机端是否已经扫描二维码并确认 4.访问登录地址,获得uin...
用户通过扫描二维码,将登录请求发送到微信客户端,微信客户端验证成功后将授权信息返回给第三方应用,从而完成登录。这种机制避免了用户在不安全的网络环境下直接输入账号密码。 4. **OAuth2.0授权框架**: 微信...
ECSHOP是一款开源的电子商务系统,而微信扫码支付则是中国广泛使用的移动支付方式之一,通过扫描二维码完成在线交易。 **描述详解:** 描述中提到“微信扫码支付早已在pc网站盛行”,意味着在PC端的电子商务平台上...
在IT行业中,微信扫码登录已经成为了许多网站和应用提供便捷登录方式的一种常见实践。这个教程将专注于介绍如何在ASP(Active Server Pages)网页中实现微信扫码登录的功能,这对于提升用户体验和增强用户粘性有着...
在IT行业中,微信扫码登录是一种常见的身份验证方式,特别是在PC端的应用上。微信扫码控制器代码是实现这一功能的关键部分,它连接了用户、微信服务器和应用程序之间的交互流程。本文将详细解析“微信PC端扫码控制器...
可以用这个类来编写微信PC客户端,完成微信消息收发。 void Attach(HWND hWnd); //设置关联窗口 HGLOBAL GetQRCode(); //得到登录二维码(内存) BOOL GetQRCode(LPCTSTR lpszPath); //得到登录二维码(文件) ...
微信支付,支付宝支付,PC扫描支付和手机支付 二、功能介绍 1、支持“支付宝”扫描支付和手机支付,只要把相关支付参数配置到程序里面,就可以正常使用支付; 2、支持“微信”扫描支付和公众号支付,只要把相关...
在实际开发中,你可以参考提供的"ecshop PC端第三方登录--微信扫码登录--微信开放平台接口"文档,里面应该详细列出了接口调用方法、参数以及返回值,帮助你完成ECShop与微信的集成工作。确保遵循文档的步骤,调试并...
微信PC版是一款专为个人电脑用户设计的即时通讯软件,由腾讯公司开发,它提供了与手机微信相似的功能,包括文字聊天、语音视频通话、文件传输、朋友圈浏览等,方便用户在电脑端进行高效的沟通和工作。以下是关于微信...
在模拟微信PC版的项目中,扫码登录功能可能涉及到Web服务调用,获取微信服务器的二维码图像,并在UI上展示。这通常会用到HTTP请求、图片处理和异步编程等技术。同时,可能还需要一个本地摄像头接口,用于扫描二维码...
在PC端应用时,通常会生成一个支付二维码,用户用手机微信APP扫描后完成支付流程。其主要步骤包括: - **申请接口**: 首先,开发者需要在微信商户平台上注册并申请微信支付接口。 - **生成预支付订单**: 在后端...
1. **登录模块**:实现PC端的微信扫码登录,这通常涉及到调用微信官方的OAuth2.0授权协议,用户通过扫描二维码完成身份验证。 2. **消息接收模块**:接收微信服务器推送的收款通知,可能使用了长轮询(Long Polling...
这个压缩包文件“WxPayDemo”包含了微信支付的多种实现方式,包括JSAPI、APP、小程序、PC端扫码以及H5支付。接下来,我们将详细探讨这些支付方式及其相关知识点。 1. JSAPI(JavaScript API)支付: JSAPI支付是...
SDK会生成适用于PC端的支付二维码,用户通过微信客户端扫描后,同样会在微信内部完成支付流程。 退款接口是微信支付系统中的一个重要组成部分,它允许商家在必要时对已完成的交易进行退款操作。开发者使用此SDK可以...
标题中的“PC微信2.4.5.73 Call 支持V1/wxid加好友”指的是微信桌面版(PC版)的一个特定版本——2.4.5.73,该版本增加了一项新功能,即通过V1接口支持添加wxid(微信ID)为好友。微信ID是每个微信用户的唯一标识,...
"ecshop PC端微信扫码支付插件" 指的是一个专为EcShop电子商务平台设计的插件,它允许用户在PC端通过微信扫码完成支付过程。这意味着该插件集成了微信支付的API接口,使得EcShop网站能够支持微信的二维码支付方式,...
其中,由DZ铭翼开发的“DZ3.2PC支付宝+PC微信扫码+手机支付宝+微信内支付免签约充值插件”是专为Discuz! 3.2论坛系统打造的一站式支付解决方案。 这个插件的推出,使得论坛用户能够通过多种便捷的支付渠道完成充值...