在OutSystems中实现OAuth 2.0令牌生成服务的技术求助
Postman 自动化生成 Access Token 并复用的实操方案
先搭好令牌生成的基础请求
新建一个独立请求,指向你的token生成接口,把grant_type、client_id这些必填参数按API要求填好(一般是表单格式),先手动跑一遍确认能拿到正常的token响应。把token存进环境变量
打开这个令牌请求的「Tests」标签,加一段脚本自动提取token并存到环境变量里,示例代码:const resData = pm.response.json(); pm.environment.set("accessToken", resData.access_token); // 顺便存过期时间,方便后续判断要不要刷新 pm.environment.set("tokenExpireTime", Date.now() + resData.expires_in * 1000);加前置脚本自动续期token
给需要用token的单个请求(或者整个集合的全局前置脚本)加逻辑:检查现有token是否存在/过期,不行就自动调用令牌接口刷新。示例脚本:const currentToken = pm.environment.get("accessToken"); const expireTime = pm.environment.get("tokenExpireTime"); if (!currentToken || Date.now() > expireTime) { // 调用令牌生成接口 pm.sendRequest({ url: "你的token接口地址", method: "POST", body: { mode: "urlencoded", urlencoded: [ { key: "grant_type", value: "client_credentials" }, { key: "client_id", value: pm.environment.get("clientId") }, // 建议把凭证也存环境变量,别硬编码 { key: "client_secret", value: pm.environment.get("clientSecret") } ] } }, (err, res) => { if (!err) { const newTokenData = res.json(); pm.environment.set("accessToken", newTokenData.access_token); pm.environment.set("tokenExpireTime", Date.now() + newTokenData.expires_in * 1000); pm.request.headers.add({ key: "Authorization", value: `Bearer ${newTokenData.access_token}` }); } }); } else { // token还能用,直接加到请求头 pm.request.headers.add({ key: "Authorization", value: `Bearer ${currentToken}` }); }全流程自动化运行
把所有请求放进集合,要是想全局生效就把上面的前置脚本加到集合的「Pre-request Script」里,之后用Postman Runner或者Newman命令行跑集合就行,完全不用手动去生成token了。
内容的提问来源于stack exchange,提问作者Fani
相关产品推荐
相关产品推荐

