我们知道,要接入微信登陆有两种方式
1、微信开放平台
2、微信服务号
这两种方式均可生成带参数的二维码,然后扫码获取用户基本信息的,所以我们可以在网站上用这两种方式开发网站的扫码登录,也是现在很多网站的通用做法。
微信开放平台要认证开发者,需要 300 块 /年,微信服务号也需要提交企业资料认证,需要 300 块 /年。有些想要学习的或者自己的网站完全没有盈利的,其实不舍得花这个钱,特别是个人开发者,没有企业资料去做认证,因为微信开放平台就算是个人,也需要盖章的,我也试过。
既然微信开放平台和微信认证的服务号每年都需要 300 块认证费,个人学习不舍得,没资料,那么咱们把矛头指向微信小程序了。
微信小程序无论是个人还是企业的,都开放了获取用户基本信息的,无须认证,不收费。而且,还提供了 3 个生成带参数的二维码的接口,注意哦,是带参数的二维码,所以这三个接口为我们提供了这样的方法。
既然能够获取用户基本信息,还可以生成二维码,那么就可以实现网站扫码登录了!
1、登陆页面生成带参数的二维码
2、扫码,获取参数
3、等待用户授权
4、授权后,把用户基本信息(头像、昵称)和参数一起插入数据库
5、登陆页面轮询数据库当前参数的数据变化
6、如果登陆信息有变化(可以用一个状态码检测是否已经扫码,如果有数据进来则扫码了,如果没有数据进来则没扫码,继续轮询)
7、扫码成功,页面输出用户的基本信息,存 SESSION,登录!
8、登陆成功后,小程序端自动注销登陆,方便下次扫码。
1
yao990 2018-07-14 17:58:54 +08:00 via Android
哇,大神你真厉害。不过我这边最后还是老老实实的认证了服务号,因为做微信登录的初衷是方便用户在手机端不用扫码,点击直接登录直接登录,能省钱更好,实在不能省就不省了。小程序登录确实省钱也很方便,不过在手机端每次登录来回跳转,感觉违背了做微信登录的初衷。所以最后没有选择这个方法,另外也没有选开放平台,因为网站主要用户都是手机端的,仔细研究开放平台之后发现开放平台主要针对电脑用户,所以就没有选择。最后谢谢大神了,大神这种钻研精神值得学习!相信这种方案在手机端需求不高的情况下会很好用的!
|
2
vibbow 2018-07-14 18:01:23 +08:00
所以没有和微信的服务器进行任何验证?
也就是说前端可以伪造任何请求? |
3
falcon05 2018-07-14 18:19:21 +08:00 via iPhone
我做了一个反向场景的扫码,网站已注册用户加了一个二维码,通过小程序扫一扫,把网站的用户绑定到小程序里,小程序里同步原来网站用户的信息。
|
6
also24 2018-07-14 19:47:57 +08:00
@vibbow #5
微信在小程序接口内有提供 session_key 来用于做数据校验,当然这里有个前提是开发者有正确使用: https://developers.weixin.qq.com/miniprogram/dev/api/signature.html#wxchecksessionobject |
7
z0ne 2018-07-14 19:50:29 +08:00
卧槽,哥们,这个。。
和我做的一样,并且我已经用在自己的网站中了(多个子网站,统一小程序或者微信扫描登陆管理认证) https://dev.vpush.cloud 登陆就是直接扫一扫确认~ 并且其中用户的 openId 和 access_token 都经过了微信后端的认证 |
8
aWangami 2018-07-15 09:11:56 +08:00 via Android
思路不错~
|
9
tiaod 2018-07-15 10:49:36 +08:00
公众号生成带参数的二维码也行啊。其实很多微信登录都是利用公众号生成带参数二维码,这样可以顺便吸粉。。
|