使用 OAuth 2.0 使用变量令牌进行 API 调用

Make an API call with variable token with OAuth 2.0

我遇到了一个问题。我从未使用过 OAuth 2.0 身份验证,现在我正在尝试使用 OAuth 2.0 身份验证进行 API 调用。 好吧,我已经使用 Postman 拨打了电话,但现在我想将其自动化。我的意思是,我想在变量中获取一个令牌,并且在每次新调用之后我都想生成新的访问令牌。

我已经做了一些事情,但仍然收到回复:"Authorization failure"。 我已经在集合 Pre-requrest Scripts 中写了这个:

let tokenUrl = 'tokenUrl';
let clientId = 'clientId';
let clientSecret = 'secret';
let scope = 'scope'

let getTokenRequest = {
    method: 'GET',
    url: tokenUrl,
    auth: {
        type: "basic",
        basic: [
            { key: "username", value: clientId },
            { key: "password", value: clientSecret }
        ]
    },
    body: {
        mode: 'formdata',
        formdata: [
            { key: 'grant_type', value: 'client_credentials' },
            { key: 'scope', value: scope }
        ]
    }
};

pm.sendRequest(getTokenRequest, (err, response) => {
    let jsonResponse = response.json(),
        newAccessToken = jsonResponse.access_token;

    console.log({ err, jsonResponse, newAccessToken })

    pm.environment.set('accessToken', newAccessToken);
    pm.variables.set('accessToken', newAccessToken);
});

在那之后,当我添加一个新请求并在授权类型中选择从父级继承身份验证并尝试发送请求时,它给了我一个响应:"Authorization failure"

P.S: 这是源网站,我从那里拿了一个脚本:https://marcin-chwedczuk.github.io/automatically-generate-new-oauth2-tokens-when-using-postman

我已经通过将方法更改为 POST 解决了我的问题。 我在脚本中有错误。 所以,新脚本看起来像这样:

let tokenUrl = 'tokenUrl';
let clientId = 'clientId';
let clientSecret = 'secret';
let scope = 'scope'

let getTokenRequest = {
    method: 'POST',
    url: tokenUrl,
    auth: {
        type: "basic",
        basic: [
            { key: "username", value: clientId },
            { key: "password", value: clientSecret }
        ]
    },
    body: {
        mode: 'formdata',
        formdata: [
            { key: 'grant_type', value: 'client_credentials' },
            { key: 'scope', value: scope }
        ]
    }
};

pm.sendRequest(getTokenRequest, (err, response) => {
    let jsonResponse = response.json(),
        newAccessToken = jsonResponse.access_token;

    console.log({ err, jsonResponse, newAccessToken })

    pm.environment.set('accessToken', newAccessToken);
    pm.variables.set('accessToken', newAccessToken);
});