繁体   English   中英

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

[英]Make an API call with variable token with OAuth 2.0

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

我做了一些事情,但仍然收到回复说:“授权失败”。 我在集合 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);
});

在此处输入图片说明

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

PS:这是源网站,我从那里拿了一个脚本: 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);
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM