я сделал oauth2 с помощью oauth2 - https://github.com/trongdth/OAuth2-for-iOS, я успешно авторизован и получил ответКак выполнить запрос токена доступа в интеграции Fitbit API - iOS?
{
"kOAuth_AccessToken" = "eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE0NDIzODY2NzEsInNjb3BlcyI6Indsb2Mgd3BybyB3bnV0IHdzbGUgd3NldCB3d2VpIHdociB3YWN0IHdzb2MiLCJzdWIiOiIzRFJQQzYiLCJhdWQiOiIyMjlROVEiLCJpc3MiOiJGaXRiaXQiLCJ0eXAiOiJhY2Nlc3NfdG9rZW4iLCJpYXQiOjE0NDIzODMwNzF9.5vTYvUAuvMflnOw_7cc1nZoighhtUx4RU26-Q7SewzQ";
"kOAuth_AuthorizeURL" = "https://www.fitbit.com/oauth2/authorize";
"kOAuth_Callback" = "http://oauth-callback/fitbit";
"kOAuth_ClientId" = string;
"kOAuth_ExpiredDate" = "";
"kOAuth_RefreshToken" = 97ad2a073f40f21974c8d27cdb74523047f39e98cd2adcfd6f6cc3eb92522d53;
"kOAuth_Scope" = "activity heartrate location nutrition profile settings sleep social weight";
"kOAuth_Secret" = string;
"kOAuth_TokenURL" = "https://api.fitbit.com/oauth2/token";
}
Вот - как я могу получить code
значение параметра URI в обратном вызове URI?
По Fitbit Док ---
Токен доступа Запрос: - Когда пользователь разрешает приложение в потоке кода авторизации Грант, ваше приложение должно обменять код авторизации на маркер доступа. Код действителен только 10 минут.
Authorization Header: -
Authorization заголовок должен быть установлен на Basic с последующим пробелом и кодировкой Base64 строку идентификатора клиента вашего приложения и секретом сцепленным с двоеточием.
Я сделал это, используя AFNetworking
Lib, пожалуйста, посмотрите на код (заголовок) -
-(AFHTTPSessionManager *)getSessionManager {
if (!self.sessionManager){
NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
sessionConfiguration.HTTPAdditionalHeaders = nil;
NSURL *url = [NSURL URLWithString:FITBIT_BASE_URL];
self.sessionManager = [[AFHTTPSessionManager alloc] initWithBaseURL:url sessionConfiguration:sessionConfiguration];
}
// [self.sessionManager.requestSerializer setValue:Appdelegate.fitbitAuthorizationString forHTTPHeaderField:@"Authorization"];
[self.sessionManager.requestSerializer setAuthorizationHeaderFieldWithUsername:Appdelegate.fitbitOAuthClientId password:Appdelegate.fitbitOAuthClientSecret];
self.sessionManager.responseSerializer = [JSONResponseSerializerWithData serializer];
self.sessionManager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
return self.sessionManager;
}
и просил маркер доступа - код (параметр), составляет
NSDictionary *tempParamsDict = @{@"client_id":[JsonUtil stringFromKey:@"kOAuth_ClientId" inDictionary:dictResponse], @"grant_type":@"authorization_code", @"redirect_uri":[JsonUtil stringFromKey:@"kOAuth_Callback" inDictionary:dictResponse], @"code":@""};
Мой запрос является
[dP postJsonContentWithUrl:@"oauth2/token" parameters:tempParamsDict completion:^(BOOL success, id responseObject, NSError *error) {
// NSLog(@"%@", responseObject);
if (success) {
NSLog(@"Response: %@", responseObject);
}
else {
NSLog(@"%@", error.localizedDescription);
/*
You got 404 response ,The 404 or Not Found error message is a HTTP standard response code indicating that the client was able to communicate with the server, but the server could not find what was requested.
Make sure that you have valid url, try to put your link in the browser and see if it is correct, if the url you requested have special headers
*/
}
}];
Я получаю - запрос не: не найден (404) error
. Что я пропустил, и как я могу продолжить дальше, чтобы получить токен и получить доступ к Fitbit API?
Update Это происходит из-за код доступа, поэтому я попытался получить доступ кода, теперь я получаю эту ошибку
description of error->_userInfo:
{
NSErrorFailingURLKey = "https://api.fitbit.com/oauth2/token.json";
NSErrorFailingURLStringKey = "https://api.fitbit.com/oauth2/token.json";
NSLocalizedDescription = cancelled;
}
Большое спасибо заранее
http://stackoverflow.com/questions/37520816/how-to-integrate-fitbit-api-in-ios-app-using-swift/39697291#39697291 –