u014378108 2025-10-21 09:15 采纳率: 0%
浏览 11

小程序调用后端api 的Token如何设置

小程序调用后端接口 使用的token问题
先开发了app,后面增了小程序。
app 是禁止多端同时登录的,否则会导致一端下线。目前小程序和app都是通过调用api接口获取后台数据。
小程序uid+token来验证用户(参数中的token跟数据库中的token进行比对),我把uid,token保存在storage中,这个token跟app的token是同一个。
那么就会出现一个问题,app那边互踢,导致token更新,然而保持在storage中的token不是最新的,这时小程序请求接口时就会出现验证失败。
小程序的token要怎么弄,才能避免app互踢时token更新 带来的影响。
目前解决方法是:再造一个字段保存小程序的token,
不知道还有没有更好的方法?

  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2025-10-21 09:32
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    解决方案

    由于小程序和APP都需要调用后端API接口,且需要验证token,为了解决多端同时登录的问题,我们可以采用以下方案:

    1. 统一token管理:在后端使用一个统一的token管理系统,例如Redis或Memcached,存储每个用户的token信息。
    2. token类型:使用两种token类型,分别用于小程序和APP:
    • 小程序token:使用一个短期的token(例如1小时),每次小程序登录时生成新的token。
    • APP token:使用一个长期的token(例如1周),每次APP登录时更新token。
    1. token校验:在后端API接口中,校验token的有效性和类型,根据token类型进行相应处理。
    2. token更新:在小程序和APP中,需要定期更新token,以确保token的有效性。

    核心代码

    // 后端API接口
    function checkToken($token) {
        // 校验token的有效性和类型
        if ($token['type'] == 'small_program') {
            // 小程序token,短期token
            $tokenExpire = 3600; // 1小时
        } elseif ($token['type'] == 'app') {
            // APP token,长期token
            $tokenExpire = 604800; // 1周
        }
        
        // 验证token的有效性
        if (time() > $token['expire']) {
            return false;
        }
        
        return true;
    }
    
    // 小程序端
    function updateToken() {
        // 生成新的token
        $token = generateToken();
        // 更新token
        updateTokenToServer($token);
    }
    
    // APP端
    function updateToken() {
        // 更新token
        updateTokenToServer($token);
    }
    

    注意:上述代码仅为示例,具体实现需要根据实际需求进行调整。

    评论

报告相同问题?

问题事件

  • 创建了问题 10月21日