在Postman请求中授权第三方服务

tez616oj  于 2022-12-04  发布在  Postman
关注(0)|答案(1)|浏览(174)

希望在Postman中创建请求,以便在请求中包含对第三方的授权。在应用程序中,它的工作方式如下:
1.客户端单击按钮
1.应用程序检查是否有令牌,如果没有,则返回到第三方服务的链接以进行授权
1.客户端跟随链接,输入凭据,提交表单
1.服务使用授权代码作为查询参数将客户端重定向回应用程序。
1.客户端按下另一个按钮,通过授权码接收令牌。
那么,有没有一种方法可以在Postman中处理此场景,而不是从响应中复制链接并将其粘贴到浏览器中以完成授权?
尝试从测试脚本选项卡发出请求,如下所示:

var jsonData = JSON.parse(responseBody);
console.log(jsonData.data)
if (jsonData.data) {
    pm.sendRequest(jsonData.data, function (err, response) {
        console.log(response);
        return response;
    });
}

但这实际上并没有什么用

ijnw1ujt

ijnw1ujt1#

有一种方法可以在请求之前获取令牌。您可以使用Pre-request Script书签。编写JS代码来获取令牌并将其保存到变量(集合/环境)。在特定请求中打开Authorization书签并调用您的变量。
持票人:

我的预先请求脚本,例如:

let collUsername = pm.variables.get("username");
let collPassword = pm.variables.get("password");
let collClient_id = pm.variables.get("client_id");
let collClient_secret = pm.variables.get("client_secret");
const postRequest = {
    url: pm.variables.get("url"),
    method: 'POST',
    header: {
        'Accept': '*/*',
        'Content-Type': 'application/x-www-form-urlencoded'
    },
    body: {
        mode: 'urlencoded',
        urlencoded : [
          { key: 'username', value: collUsername},
          { key: 'password', value: collPassword},
          { key: 'grant_type', value: 'password'},
          { key: 'client_id', value: collClient_id},
          { key: 'client_secret', value: collClient_secret},
          { key: 'user_type', value: 'System'}
        ]
      }
};
pm.sendRequest(postRequest, (error, response) => {
    console.log(error ? error : response.json());
    let jsonRes = response.json();
    pm.collectionVariables.set("token", jsonRes.access_token);
});

我不知道您身份验证方法,因此您脚本可能会有所不同如果您只想刷新过期令牌,则可以添加带有日期变量,并检查是否经过了适当时间以获取新令牌
编辑:在测试中编写的脚本在获得响应后执行,因此不适合您的情况。

相关问题