需求
网站如果想要实现微信扫码登录其实有很多种方案,常见的方案就是微信开放平台和微信公众号服务号。前者是目前大部分网站并且是微信认可的一种方式,后者是开发者发现服务号具备扫码关注后即可获取用户基本信息的能力后而开发的一种方式。
而这两者其实都是需要具备资质,例如认证,对于个人开发者来说,是有一定的门槛的,而我这次分享的是0门槛的,个人开发者一样可以实现。
原理
小程序也是具备获取用户基本信息的能力的,可以调用wx.login接口
获取用户的openid实现登录。简单来说就是web端创建一个带参数的二维码同时向数据库插入一条登录记录,此时web端已经开始轮询数据库这条记录的扫码状态了,微信扫码后打开小程序并立即获取到这个参数,然后点击授权登录按钮请求wx.login这个接口获取到openid,然后将openid更新至数据库这个登录记录中并更新扫码状态,web端可以轮询到登录成功的状态码就展示登录成功。
代码
1、creatqrcode.php
是生成小程序码的界面,其中41行和42行的$appid和$appsecret要换成你的小程序的。以及92行的env_version在你的小程序上线后要改为release
,如果是开发调试中,就保持现状。
2、getstatus.php
是轮询扫码状态的后端。
3、scanCode.php
是扫码后告诉服务器你已经完成扫码的后端。
4、login.php
是小程序端向后端请求接口获取openid的,其中11行和12行的$appid和$appsecret要换成你的小程序的。
5、Db.php
是数据库配置文件,需要进去配置你的数据库地址、账号、密码、数据库名称。
6、创建数据库
CREATE TABLE `xcxqrcodelogin` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`scene` varchar(32) DEFAULT '',
`openid` varchar(32) DEFAULT '',
`status` varchar(2) DEFAULT '1' COMMENT '1未扫码2已扫码3已登录',
`creat_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=148 DEFAULT CHARSET=utf8mb4
7、附件
https://www.gulin.pro/uploads/20230213/308f82fca7a4a15e29484adc130b3bd2.zip
发表评论 取消回复