Выполните вызов API с переменным токеном с OAuth 2.0

Я столкнулся с проблемой. Я никогда не использовал аутентификацию OAuth 2.0, и теперь я пытаюсь сделать вызов API с использованием аутентификации OAuth 2.0. Ну, я позвонил с помощью Почтальона, но теперь я хочу автоматизировать это. Что я имею в виду, я хочу получить токен для переменной, и после каждого нового вызова я хочу генерировать новый токен доступа.

Я кое-что сделал, но все равно получаю ответ: «Ошибка авторизации». Я написал это в сборнике 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/automatics-generate-new-oauth2-tokens-when-using-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);
});

Есть идеи?

10000