Ошибка ответа Garmin Health API Oauth 1.0 iOS

Мне нужно показать данные о здоровье Garmin в моем приложении. В документации Garmin разработчику предлагается реализовать соединение через соединение oauth 1.0 с приложением и учетной записью Garmin. Итак, когда я применяю запрос GET/PUSH с https://connectapi.garmin.com/oauth-service/oauth/request_token? URL, он показывает следующую ошибку. К счастью, я получаю надлежащий ответ от почтальона.

Шаг 1 :

Запрос почтальона:

https://connectapi.garmin.com/oauth-service/oauth/request_token?oauth_consumer_key=3f58949f-e54d-4211-a735-e52cc0ab8f4d&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1531983278&oauth_nonce=cW1Xhs&oauth_version=1.0&oauth_signature=WveKS0cnl7w4ZNknL0WD4f7wBFU=

Ответ :

oauth_token=48d03142-ffe3-4adc-ae0e-6c3d7bdd1e18&oauth_token_secret=EY67QDeBqHNvCzlCt0HU5yQ1LkVkGOMK0b4

В моем коде я применяю оба запроса GET/POST, он показывает следующую ошибку:

Garmin Connect API Server - Error report

Состояние HTTP 400 — неправильные учетные данные потребителя OAuth.

type Status report

message Неверные учетные данные потребителя OAuth.

описание Запрос, отправленный клиентом, был синтаксически неверным.

API-сервер Garmin Connect

Мой код выглядит так:

   NSError *error;
NSString *urlString = @"https://connectapi.garmin.com/oauth-service/oauth/request_token?";
NSURL *url = [NSURL URLWithString:urlString];

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];

NSString * parameterString = [NSString stringWithFormat:@"oauth_consumer_key=3f58949f-e54d-4211-a735-e52cc0ab8f4d&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1531983278&oauth_nonce=cW1Xhs&oauth_version=1.0&oauth_signature=pfZzKhniC9zCFZdIx8d0gyIsw3Y"];
//3f58949f-e54d-4211-a735-e52cc0ab8f4d

 // NSLog(@"%@",parameterString);

[request setHTTPMethod:@"GET"];

[request setURL:url];

[request addValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
   //Even i apply push and set this data, nothing works!
  //    [request addValue:@"3f58949f-e54d-4211-a735-e52cc0ab8f4d" forHTTPHeaderField:@"oauth_consumer_key"];
   //    [request addValue:@"HMAC-SHA1" forHTTPHeaderField:@"oauth_signature_method"];
    //    [request addValue:@"1531983278" forHTTPHeaderField:@"oauth_timestamp"];
   //    [request addValue:@"cW1Xhs" forHTTPHeaderField:@"oauth_nonce"];
   //    [request addValue:@"1.0" forHTTPHeaderField:@"oauth_version"];
  //    [request addValue:@"pfZzKhniC9zCFZdIx8d0gyIsw3Y" forHTTPHeaderField:@"oauth_signature"];
  // [request addValue:@"" forHTTPHeaderField:@"oauth_consumer_key"];


NSData *postData = [parameterString dataUsingEncoding:NSUTF8StringEncoding];

[request setHTTPBody:postData];

NSData *finalDataToDisplay = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&error];

NSMutableDictionary *abc = [NSJSONSerialization JSONObjectWithData: finalDataToDisplay
                                                           options: NSJSONReadingMutableContainers

                                                             error: &error];

Как я могу преодолеть эту проблему с ответом? Кто-нибудь сталкивается с подобной проблемой? Есть идеи, как успешно работать с аутентификацией oauth 1.0 в iOS Swift/Objective Project?


person Jamshed Alam    schedule 22.07.2018    source источник
comment
Как вы вычисляете подпись oauth, я пока не могу ее вычислить. Вы можете помочь мне здесь?   -  person Mukul Jain    schedule 24.04.2019
comment
Была аналогичная проблема. В итоге использовал TDOAuth. stackoverflow.com/ вопросы/15930628/   -  person Guntis Treulands    schedule 19.09.2019