Amadeus Flight API авторизация - PullRequest
0 голосов
/ 18 марта 2020

Я пытаюсь использовать один из 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
...