Почтальон Google OAuth2.0: отсутствует обязательный параметр: код - PullRequest
0 голосов
/ 07 октября 2019

У меня есть коллекция в Postman, которая все подключается к API Google, я хочу реализовать Auth2.0 на уровне коллекции в качестве сценария предварительного запроса, чтобы сгенерировать токен доступа. Для этого я использую следующий код:

let callbackUrl = 'xxxxxxxxx';
let authUrl = 'https://accounts.google.com/o/oauth2/auth';
let tokenUrl = 'https://oauth2.googleapis.com/token';
let clientId = 'xxxxxxxxx';
let clientSecret = 'xxxxxxxxxxxx';
let scope = 'xxxxxxxxx'

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: 'authorization_code' },
            { key: 'redirect_uri', value: callbackUrl },
            { key: 'authUrl', value: authUrl },
            { 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);
});

Если я его запусту, я получу обратно

"Отсутствует обязательный параметр: код"

в консоли почтальона. Я вижу проблему в том, что я не отправляю параметр кода, как когда я просто генерирую токен из пользовательского интерфейса без использования сценариев предварительного запроса, я показываю это в своей консоли почтальона:

grant_type:"authorization_code"
code:"4/rgGpWyiaxxxxxxxx6j3EZANLDPmHHxxxxxxxxxxxxxxxxxxxo6bRnbBZovn1T-Setccccccccccccccccccccccccccccccccccccccccccccccxxxxxxxxxxx"
redirect_uri:"xxxxxxxx"
client_id:"xxxxxxxx"

Мой вопросоткуда этот код? Я предполагаю, что почтальон генерирует это как часть моего тела запросов? И как мне сгенерировать его для добавления в мое тело запроса как часть моего сценария предварительного запроса?

ОБНОВЛЕНИЕ:

Я обнаружил, что сначала мне нужно нажать на запрос GET, чтобы получитькод авторизации, затем используйте его в POST.

Если я запускаю в браузере, используя приведенный ниже URL, и авторизую логин, я получаю возвращенный код:

https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/bigquery&response_type=code&access_type=offline&redirect_uri=&client_id=

Однако в Почтальоне он возвращает мне HTML-страницу входа в Google, означающую, что я должен авторизоваться каждый раз.

Любые идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...