收藏
回答

多设置使用同一账号登陆sdk;如何处理令牌问题?

框架类型 问题类型 终端类型 AppID 环境ID 基础库版本
小程序 Bug 工具 wxf68605ee2474067e pro-7gj9jhp51fdd0eee 3.65

我现在遇到了一个问题想要咨询下;我有一个云开发小程序商城;然后我用electron做了一个客户端口让商户使用;客户使用的是cloudbase/js-sdk 2.0 连接云数据库和云函数;现在的情况是这个客户端是多人使用的;程序经常报错:invalid refresh token. for it may be has been refreshed by other process;请问下要怎么优化这个流程?我的客户端登陆流程是打开electron程序后;每个客户端都使用同一个tcb账号登陆;然后就报这个错误了;是不是要用一个固定的tcb账号供客户登陆;客户账号(数据库中自建账号与tcb的账号不同)验证成功后,再下发一个与自建账号绑定的tcb账号重新登陆cloudbase/js-sdk?还是在客户端再添加一个管理端 sdk?有没有可以用同一个账号,然后添加设备码的方式去处理这个问题的方式

回答关注问题邀请回答
收藏

1 个回答

  • 揪一口布丁🍮
    揪一口布丁🍮
    03-19

    因为tcb的身份认证依赖access_token 和 refresh_token,当一个客户端刷新access_token后其他客户端的refresh_token就会立即生效

    多多个客户端共用一个tcb账号一定会出现这个问题【导致每个客户端的refresh_token互相干扰】


    在客户端添加设备标识【适用于仍然要用一个 TCB 账号,但希望避免 token 刷新冲突。】

    思路

    1. 在客户端存储 device_id(可以用 uuid 生成)。

    2. 每次登录时,检查该设备的 refresh_token 是否过期,避免不同设备间互相干扰。

    3. 通过云函数或数据库管理 device_id 绑定的 token,让不同设备使用自己的 refresh_token。


    实例:

    const deviceId = localStorage.getItem("device_id") || generateUUID();

    app.auth().signInAnonymously({

      extraData: { device_id: deviceId }

    });

    03-19
    有用
    回复
登录 后发表内容
问题标签