У меня есть коллекция в 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, означающую, что я должен авторизоваться каждый раз.
Любые идеи?