Я пытаюсь использовать один из API-интерфейсов для полетов Amadeus (поиск авиабилетов по самым низким тарифам), и у меня возникли проблемы с авторизацией. Первая часть авторизации работает нормально, где я должен ввести тип предоставления, ключ API и секрет API. Это возвращает токен доступа, необходимый для возврата API полета. Тем не менее, при печати тела ответа я получаю нулевое значение. Может ли кто-нибудь помочь мне с этим? Я показываю свой ключ API и секрет API, но это не проблема, поскольку я могу создать новый. Вот код:
Чтобы сначала предоставить контекст, вот как вызывается API Amadeus после получения токена доступа с сервера авторизации. Эта конечная точка возвращает ссылки для регистрации на рейс.
curl -X GET \ "https://test.api.amadeus.com/v2/reference-data/urls/checkin-links?airlineCode=1X" \ -H "Авторизация: Bearer CpjU0sEenniHCgPDrndzOSWFk5mN"
Я считаю, что мой Возможно, проблема в моем заголовке авторизации в конечной точке поиска авиабилетов. Я объединил две переменные, в которых token_type со значением «Bearer» и токен доступа. В скручиваемом примере «Носитель» находится в пределах меток речи. Во флаттере вы не можете этого сделать, поскольку «Авторизация - единственный заголовок. Ниже мой код в дартс:
getFlights(fromCode, toCode) async {
// getting access token
var response = await http.post(
'https://test.api.amadeus.com/v1/security/oauth2/token',
body: {
"grant_type": "client_credentials",
"client_id": "cxuxBmIvbpbv0JKzKTsJjNqc595uJVYb",
"client_secret": "buhj4SDGVrG1AzzV",
},
);
if (response.statusCode == 200) {
try {
print(response.body);
var code = jsonDecode(response.body);
if (code != null) {
var tokenType = code['token_type'];
print(tokenType);
print(code['access_token']);
var token = code['access_token'];
var bearerToken = '$tokenType ' + '$token';
print(bearerToken);
// flight low-fare search endpoint
var flightApi = await http.get(
'https://test.api.amadeus.com/v1/shopping/flight-offers?origin=LHR&destination=CDG&departureDate=2020-03-19&max=2',
headers: {
"Authorization": bearerToken,
});
var flight = json.decode(response.body);
print(flight['data']);
}
} catch (e) {
print(e.toString());
}
}
}
Это возврат от сервера авторизации, который предоставляет токен доступа:
{
"type": "amadeusOAuth2Token",
"username": "I REMOVED THIS",
"application_name": "I REMOVED THIS",
"client_id": "cxuxBmIvbpbv0JKzKTsJjNqc595uJVYb",
"token_type": "Bearer",
"access_token": "z8rVGOAuGaXGNUMIcVPYW76ki5Dl",
"expires_in": 1799,
"state": "approved",
"scope": ""
}
Это возврат для конечная точка поиска дешевых авиабилетов
flutter: null