PC 端网站使用微信扫码登录

查看 45|回复 3
作者:dream4ever   
目前正在开发的业务,有微信小程序端和 PC 网页端两个版本。
小程序端的登录逻辑,是通过调用微信的接口,获取用户的 openid ,把它作为用户的身份标识。
PC 网页端为了开发方便,也想让用户通过微信扫码登录,获取用户在小程序中的 openid ,这样就可以和小程序端共用一套用户身份。
目前的整体流程如下:
[ol]

  • PC 网页端调用接口来生成小程序码,然后显示在前端页面中让用户扫码。生成小程序码时,可以传入一个 scene 参数,后端在返回小程序码时,把这个 scene 参数一并返回,前端进行存储。

  • 微信小程序扫码,拿到 scene 参数,然后把小程序用户的 openid 和 scene 作为 key-value 传给后端存储。

  • PC 网页端查询后端接口,检查 scene 参数是否有对应的 openid ,是的话就将 openid 存储在前端。
    [/ol]
    现在的问题是,整体流程都走通了,但是最后一步 PC 网页端查询后端接口,以怎样的间隔轮询接口才是合理的方式?
    我目前想的是每隔 5 秒轮询一次,累计轮询 5 次(这个值可以调整)都没能获取到 scene 对应的 openid 的话,就认为用户没有用微信扫码,然后停止轮询,不知道这样合不合适。
  • pytth   
    不用这么麻烦吧,无论是小程序端还是 pc 端,都是在同一个小程序,openid 都是一样的。pc 端生成的小程序码,微信扫码仍然可以调用一次 wx.login 获取 openid ,然后对比数据库的 openid 是否已存在,如果存在则登陆,不存在则走注册的流程。轮询的目的是检查是否已经授权登陆获取到 openid ,设置一个过期时间,例如 2 分钟内没有获取到 openid 则代表没完成整个登陆过程,则停止轮询。
    可以看一下我的: https://segmentfault.com/a/1190000044295229
    vczyh   
    一般来说 PC 扫码和小程序各用各的,同一个主体 unionid 是相同的,可以通过这个判断用户唯一。如果非要走 PC 扫码小程序登录可以参考腾讯云登录流程。
    chairuosen   
    3 秒一次,轮询 5 分钟,然后二维码罩一个蒙层说失效了,点一下刷新继续轮询
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部