Сделайте вызов API с переменным токеном с OAuth 2.0 - PullRequest
0 голосов
/ 16 января 2020

Я столкнулся с проблемой. Я никогда не использовал аутентификацию 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);
});

enter image description here

После этого, когда я добавляю новый запрос и в тип авторизации я выбрав наследовать аутентификацию от родителя и пытаясь отправить запрос, он дает мне ответ: «Ошибка авторизации»

PS: Это исходный веб-сайт, откуда я взял скрипт: https://marcin-chwedczuk.github.io/automatically-generate-new-oauth2-tokens-when-using-postman

1 Ответ

0 голосов
/ 16 января 2020

Я решил свою проблему, изменив метод на 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);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...