微信扫网站上的小程序码, 打开小程序, 点确认登陆后, 网站登录, 自动刷新, 这种是怎么实现的呢 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
CoderLife
V2EX    程序员

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

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

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

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

    这种是怎么实现的呢.

    谢谢

    第 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  
    PRO
       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     Solana     3157 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 11:48 PVG 19:48 LAX 03:48 JFK 06:48
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86