You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Postman前置脚本实现Token自动刷新:第三次请求授权失败

Postman前置脚本第三次请求返回未授权问题排查与解决

核心问题分析

前两次请求能成功获取到Activation Token,但第三次请求返回未授权,最可能的原因是第三次请求没有正确携带刚获取的授权凭证,或是变量更新的时序问题导致凭证未及时生效。

具体解决方向

  • 动态构建第三次请求,确保携带最新Token
    你提前定义了sessionTokenRequest,但此时token变量还未被赋值,所以这个请求对象里并没有包含后续获取到的Activation Token。需要在拿到newAccessToken之后,再动态创建sessionTokenRequest,把Token直接传入请求的header或body中(根据接口要求调整)。

  • 直接使用内存变量而非集合变量
    虽然你调用了pm.collectionVariables.set更新变量,但Postman的集合变量更新存在异步延迟风险,直接使用newAccessToken这个内存变量传递给第三次请求,能避免时序问题。

  • 确认Session Token接口的授权要求
    检查接口文档,确认Session Token接口是否需要特殊的授权格式(比如Bearer前缀、特定header字段),或者是否需要结合第一次请求返回的其他参数一起传递。

修改后的示例代码

const newActivationRequest = {
    method: 'POST',
    url: newActivationUrl,
    body: {
    }
};

const activationTokenRequest = {
    method: 'POST',
    url: activationTokenUrl,
    body: {
    }
};

pm.sendRequest(newActivationRequest, (err, responseNewActivation) => {
    const jsonResponseNewActivation = responseNewActivation.json();
    const statusNewActivation = jsonResponseNewActivation.status;
    
    if(statusNewActivation === 'SUCCESS'){
        pm.sendRequest(activationTokenRequest, (err, responseActivationToken) => {
            const jsonResponseActivationToken = responseActivationToken.json();
            const statusTokenRequest = jsonResponseActivationToken.status;

            if(statusTokenRequest === 'SUCCESS'){
                const newAccessToken = jsonResponseActivationToken.access_token;
                pm.collectionVariables.set('token', newAccessToken);

                // 拿到Token后再构建Session请求,确保携带凭证
                const sessionTokenRequest = {
                    method: 'POST',
                    url: sessionTokenUrl,
                    headers: {
                        'Authorization': `Bearer ${newAccessToken}` // 按接口要求调整授权格式
                    },
                    body: {
                        // 接口所需请求体内容
                    }
                };

                pm.sendRequest(sessionTokenRequest, (err, responseSessionToken) => {
                    if (err) {
                        console.error('Session请求出错:', err);
                        return;
                    }
                    const jsonResponseSessionToken = responseSessionToken.json();
                    const statusSessionToken = jsonResponseSessionToken.status;

                    console.log('8');

                    if(statusSessionToken === 'SUCCESS'){
                        const newSessionToken = jsonResponseSessionToken.access_token;
                        pm.collectionVariables.set('token', newSessionToken);
                    } else {
                        console.error('Session请求失败:', jsonResponseSessionToken);
                    }
                });
            }
        });
    }
});

内容的提问来源于stack exchange,提问作者Andrey Mokeev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 21:46:06