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