如何在Postman子请求中获取集合节点的refresh_token?
解决Postman中获取集合级实时refresh_token的问题
方法一:从集合认证信息中实时提取refresh_token
在集合的Pre-request Script(或登出请求的Pre-request Script)中添加以下代码,每次请求前自动从当前有效的OAuth2令牌中提取refresh_token并存入集合变量:
// 获取集合的OAuth2认证配置 const oauthAuth = pm.auth.get("oauth2"); if (oauthAuth?.refreshToken) { // 将refresh_token存入集合变量,子请求可直接引用{{refresh_token}} pm.collectionVariables.set("refresh_token", oauthAuth.refreshToken); }
这个方法能覆盖令牌自动刷新的场景,因为每次请求都会读取当前最新的认证数据。
方法二:在令牌获取请求的Tests中更新refresh_token
如果你的集合是通过指定Token URL自动获取令牌,找到Keycloak的/token请求(Postman可能会自动生成该请求),在它的Tests标签中添加代码,每次获取/刷新令牌时更新集合变量:
const jsonData = pm.response.json(); if (jsonData.refresh_token) { pm.collectionVariables.set("refresh_token", jsonData.refresh_token); }
这样每次令牌更新时,refresh_token都会同步更新到集合变量中,登出请求直接使用{{refresh_token}}即可。
注意事项
- 确保登出请求中正确引用变量:clientId用
{{clientId}},refresh_token用{{refresh_token}} - 优先使用集合变量而非环境变量,避免跨环境的变量冲突
- 如果使用方法一,建议把代码放在集合级的Pre-request Script,这样所有子请求都能共享最新的refresh_token
内容的提问来源于stack exchange,提问作者GreenEyedAndy
相关产品推荐
相关产品推荐

