V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
TANKING
V2EX  ›  微信

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

  •  1
     
  •   TANKING · 2018-07-14 17:04:29 +08:00 · 6547 次点击
    这是一个创建于 2084 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    1、微信开放平台

    2、微信服务号

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

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

    免费的方法来了

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

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

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

    我这里做了一个测试。


    实现方法是:

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

    2、扫码,获取参数

    3、等待用户授权

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

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

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

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

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

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

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

    https://dev.vpush.cloud
    登陆就是直接扫一扫确认~
    并且其中用户的 openId 和 access_token 都经过了微信后端的认证
    aWangami
        8
    aWangami  
       2018-07-15 09:11:56 +08:00 via Android
    思路不错~
    tiaod
        9
    tiaod  
       2018-07-15 10:49:36 +08:00
    公众号生成带参数的二维码也行啊。其实很多微信登录都是利用公众号生成带参数二维码,这样可以顺便吸粉。。
    TANKING
        10
    TANKING  
    OP
       2018-07-15 11:09:49 +08:00
    @tiaod 公众号需要认证,300 块一年
    cdwyd
        11
    cdwyd  
       2019-02-02 09:15:00 +08:00 via Android
    @yao990 你好,请问在非微信浏览器的手机访客怎么实现微信登录?需要保存二维码然后扫描吗?
    有认证的服务号但是没有开放平台账号,谢谢。
    yao990
        12
    yao990  
       2019-02-11 00:57:53 +08:00 via Android
    @cdwyd 这个需要微信开发者账号,同样需要认证
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   963 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 20:39 · PVG 04:39 · LAX 13:39 · JFK 16:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.