通过小程序实现网站扫码登录!每年都可以省 300 块...

2018-07-14 17:04:29 +08:00
 TANKING

我们知道,要接入微信登陆有两种方式

1、微信开放平台

2、微信服务号

这两种方式均可生成带参数的二维码,然后扫码获取用户基本信息的,所以我们可以在网站上用这两种方式开发网站的扫码登录,也是现在很多网站的通用做法。

微信开放平台要认证开发者,需要 300 块 /年,微信服务号也需要提交企业资料认证,需要 300 块 /年。有些想要学习的或者自己的网站完全没有盈利的,其实不舍得花这个钱,特别是个人开发者,没有企业资料去做认证,因为微信开放平台就算是个人,也需要盖章的,我也试过。

免费的方法来了

既然微信开放平台和微信认证的服务号每年都需要 300 块认证费,个人学习不舍得,没资料,那么咱们把矛头指向微信小程序了。

微信小程序无论是个人还是企业的,都开放了获取用户基本信息的,无须认证,不收费。而且,还提供了 3 个生成带参数的二维码的接口,注意哦,是带参数的二维码,所以这三个接口为我们提供了这样的方法。

既然能够获取用户基本信息,还可以生成二维码,那么就可以实现网站扫码登录了!

我这里做了一个测试。


实现方法是:

1、登陆页面生成带参数的二维码

2、扫码,获取参数

3、等待用户授权

4、授权后,把用户基本信息(头像、昵称)和参数一起插入数据库

5、登陆页面轮询数据库当前参数的数据变化

6、如果登陆信息有变化(可以用一个状态码检测是否已经扫码,如果有数据进来则扫码了,如果没有数据进来则没扫码,继续轮询)

7、扫码成功,页面输出用户的基本信息,存 SESSION,登录!

8、登陆成功后,小程序端自动注销登陆,方便下次扫码。

6734 次点击
所在节点    微信
12 条回复
yao990
2018-07-14 17:58:54 +08:00
哇,大神你真厉害。不过我这边最后还是老老实实的认证了服务号,因为做微信登录的初衷是方便用户在手机端不用扫码,点击直接登录直接登录,能省钱更好,实在不能省就不省了。小程序登录确实省钱也很方便,不过在手机端每次登录来回跳转,感觉违背了做微信登录的初衷。所以最后没有选择这个方法,另外也没有选开放平台,因为网站主要用户都是手机端的,仔细研究开放平台之后发现开放平台主要针对电脑用户,所以就没有选择。最后谢谢大神了,大神这种钻研精神值得学习!相信这种方案在手机端需求不高的情况下会很好用的!
vibbow
2018-07-14 18:01:23 +08:00
所以没有和微信的服务器进行任何验证?
也就是说前端可以伪造任何请求?
falcon05
2018-07-14 18:19:21 +08:00
我做了一个反向场景的扫码,网站已注册用户加了一个二维码,通过小程序扫一扫,把网站的用户绑定到小程序里,小程序里同步原来网站用户的信息。
TANKING
2018-07-14 19:08:32 +08:00
@vibbow 请求二维码算不算?
vibbow
2018-07-14 19:39:14 +08:00
@TANKING 但是你小程序往服务器提交用户资料后,没有和微信服务器进行二次验证把。
这一步可以伪造请求就足够了。
also24
2018-07-14 19:47:57 +08:00
@vibbow #5
微信在小程序接口内有提供 session_key 来用于做数据校验,当然这里有个前提是开发者有正确使用: https://developers.weixin.qq.com/miniprogram/dev/api/signature.html#wxchecksessionobject
z0ne
2018-07-14 19:50:29 +08:00
卧槽,哥们,这个。。

和我做的一样,并且我已经用在自己的网站中了(多个子网站,统一小程序或者微信扫描登陆管理认证)

https://dev.vpush.cloud
登陆就是直接扫一扫确认~
并且其中用户的 openId 和 access_token 都经过了微信后端的认证
aWangami
2018-07-15 09:11:56 +08:00
思路不错~
tiaod
2018-07-15 10:49:36 +08:00
公众号生成带参数的二维码也行啊。其实很多微信登录都是利用公众号生成带参数二维码,这样可以顺便吸粉。。
TANKING
2018-07-15 11:09:49 +08:00
@tiaod 公众号需要认证,300 块一年
cdwyd
2019-02-02 09:15:00 +08:00
@yao990 你好,请问在非微信浏览器的手机访客怎么实现微信登录?需要保存二维码然后扫描吗?
有认证的服务号但是没有开放平台账号,谢谢。
yao990
2019-02-11 00:57:53 +08:00
@cdwyd 这个需要微信开发者账号,同样需要认证

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/470901

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX