【问题标题】:Make an API call with variable token with OAuth 2.0使用 OAuth 2.0 使用可变令牌进行 API 调用
【发布时间】:2020-01-16 19:57:45
【问题描述】:

我遇到了一个问题。我从未使用过 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);
});

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

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

【问题讨论】:

    标签: api oauth oauth-2.0 automation postman


    【解决方案1】:

    我通过将方法更改为 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);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-26
      • 2015-02-27
      • 2018-05-07
      • 2020-12-10
      • 1970-01-01
      • 1970-01-01
      • 2016-05-20
      • 1970-01-01
      相关资源
      最近更新 更多