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

微信扫网站上的小程序码, 打开小程序, 点确认登陆后, 网站登录, 自动刷新, 这种是怎么实现的呢

  •  
  •   CoderLife · 2020-05-10 09:23:10 +08:00 · 3917 次点击
    这是一个创建于 1446 天前的主题,其中的信息可能已经有所发展或是发生改变。

    请教一下, 这种是怎么实现的呢:

    微信扫网站上的小程序码, 打开小程序, 点确认登陆后, 网站登录, 自动刷新登陆状态,

    这种是怎么实现的呢.

    谢谢

    第 1 条附言  ·  2020-05-10 16:34:33 +08:00

    多谢各位的回复, 不一一答谢了

    目前已实现, 说一下我的步骤:

    1. 网站点击小程序登录后, 向后端请求, 后端生成随机128位Code, 记入临时数据库TODO1, 返回Code, 给前端
    2. 前端拿到Code, 生成小程序码的图片Url, 如: /qr/CODECODECODE, 放到图片src, 页面开始循环请求通过参数code状态查询TODO2
    3. 图片请求/qr/CODECODECODE, 后端返回小程序码, 码的参数为code=CODECODECODE
    4. 当用户扫这个小程序码后, 小程序取到code, 并跳到网站登陆授权页面, 点击授权后 (首先要保证小程序是登录状态, 未登录, 做一个先登录), 向后端请求code
    5. 后端取到code, 和用户信息, 写到对应临时表 (因为用户已登录小程序)
    6. 步骤2中, "循环请求登陆状态查询"就有返回了, 返回用户信息, 和登录状态
    7. 完成, 停止timer

    #TODO1: 这里对表要有一个过期时间, 最要记录一下IP, 做判断.
    #TODO2: 这里如果用websocket来做, 服务端也要定期去扫, 或要加入队列了, 目前后期再改造


    15 条回复    2020-05-11 11:34:24 +08:00
    sugarkeek
        1
    sugarkeek  
       2020-05-10 09:30:42 +08:00
    我猜带参数访问小程序,小程序这边确认登录,网站那边接收登录成功的回调?
    hlwjia
        2
    hlwjia  
       2020-05-10 09:31:24 +08:00
    每个打开的页面都会有一个不同 scene 值的小程序码,扫码的时候 scene 值被小程序获取,然后小程序再把值发回给服务器核验一下
    LicV587
        4
    LicV587  
       2020-05-10 09:34:52 +08:00
    看完这几篇文章,你应该就了解了
    zsdroid
        5
    zsdroid  
       2020-05-10 09:41:05 +08:00
    ajax 轮询
    Canon1014
        6
    Canon1014  
       2020-05-10 10:06:44 +08:00
    请教一个问题,#3 老哥的文章里都有说是 web 要轮询后台是不是有数据,为什么不使用 socket 连接收到数据则登陆成功或者收到数据再去查询数据库,这样不是减少很多查询的压力吗
    jzmws
        7
    jzmws  
       2020-05-10 11:00:05 +08:00
    @LicV587 收一个 万一那天用到了
    kaixinguoruobing
        8
    kaixinguoruobing  
       2020-05-10 11:19:57 +08:00
    @LicV587 mark
    hvboekml
        9
    hvboekml  
       2020-05-10 11:20:31 +08:00
    我开发过这样的一个小程序,原理正如 @hlwjia 所说的。

    @Canon1014 轮询简单
    Comdex
        10
    Comdex  
       2020-05-10 13:16:22 +08:00 via Android
    这样做的意义是不用专门接入微信登录?
    crazybinggan
        11
    crazybinggan  
       2020-05-10 14:21:15 +08:00
    就是轮询啊,你看支付宝那些的,切换扫码界面,看 network 发送的请求,到一定次数会关闭,点击更新才会再次建立。
    xizismile
        12
    xizismile  
       2020-05-10 19:59:51 +08:00 via Android
    @Comdex 这样做的意义是给小程序引流,当然你如果给一个微信公众号关注的二维码,扫码关注后那是给微信公众号引流
    callmemax
        13
    callmemax  
       2020-05-10 22:40:28 +08:00
    @LicV587 谢谢分享
    secretman
        14
    secretman  
       2020-05-11 10:02:21 +08:00
    就是一个轮询
    suchbear
        15
    suchbear  
       2020-05-11 11:34:24 +08:00
    正好在写一个几乎一样的功能,受益匪浅,这就去写
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3813 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 10:30 · PVG 18:30 · LAX 03:30 · JFK 06:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.