在iOS中使用Oauth获得Fitbit的授权 [英] get authorization from Fitbit using Oauth in iOS

查看:137
本文介绍了在iOS中使用Oauth获得Fitbit的授权的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望为Fitbit实施OAuth身份验证,以便在我的iOS应用中从FitBit Api读取数据。我注册了我的应用程序,我得到了clientId和客户端的秘密。我从过去2天开始搜索教程库。我对此一无所知。请建议我。

I want implement OAuth authentication for Fitbit to read the data from FitBit Api in my iOS app. I registered my app and i got clientId and client secret. I have been searched from past 2 days for tutorial, libraries. I am not any getting any idea about it. Please suggest me.

推荐答案

注意 - 根据 https://dev.fitbit.com/docs/oauth2/


  • 应用程序应在2016年3月14日之前升级到OAuth 2.0

  • 使用safari或SFSafariViewController打开授权页面


请替换CLIENT_ID,REDIRECT_URI和其他文本以更正信息

please replace CLIENT_ID, REDIRECT_URI and other text to correct information

Point1 -

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://www.fitbit.com/oauth2/authorize?response_type=code&client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&scope=activity%20nutrition%20heartrate%20location%20nutrition%20profile%20settings%20sleep%20social%20weight"]];

提供正确的方案网址,以便在成功登录后,您将被重定向到您的应用程序。在openURL方法中,您将获得OAUTHCODE

give proper scheme url, so that after successful login you will be redirected to your application. In openURL method you will get a OAUTHCODE

Point2 -

现在获取OAUTHTOKEN通过使用该OAUTHCODE

Now get OAUTHTOKEN by using this OAUTHCODE

-(void)toGetRequestToken:(id)sender
{
    NSString *strCode  = [[NSUserDefaults standardUserDefaults] valueForKey:@"auth_code"];
    NSURL *baseURL = [NSURL URLWithString:@"https://www.fitbit.com/oauth2/authorize"];

AFOAuth2Manager *OAuth2Manager = [AFOAuth2Manager managerWithBaseURL:baseURL clientID:CLIENT_ID secret:CONSUMER_SECRET];
    OAuth2Manager.responseSerializer.acceptableContentTypes = [OAuth2Manager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"];

    NSDictionary *dict = @{@"client_id":CLIENT_ID, @"grant_type":@"authorization_code",@"redirect_uri":@"Pro-Fit://fitbit",@"code":strCode};
    [OAuth2Manager authenticateUsingOAuthWithURLString:@"https://api.fitbit.com/oauth2/token" parameters:dict success:^(AFOAuthCredential *credential) {

    // you can save this credential object for further use 
    // inside it you can find access token also 
    NSLog(@"Token: %@", credential.accessToken);

   } failure:^(NSError *error) {
    NSLog(@"Error: %@", error);
   }];
}

Point3 -

现在你可以点击其他FitBit请求,例如UserProfile -

now you can hit other FitBit requests like for "UserProfile" --

-(void)getFitbitUserProfile:(AFOAuthCredential*)credential{

    NSURL *baseURL = [NSURL URLWithString:@"https://www.fitbit.com/oauth2/authorize"];

    AFHTTPSessionManager *manager =
    [[AFHTTPSessionManager alloc] initWithBaseURL:baseURL];
    [manager.requestSerializer setAuthorizationHeaderFieldWithCredential:credential];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
    [manager GET:@"https://api.fitbit.com/1/user/-/profile.json"
  parameters:nil progress:^(NSProgress * _Nonnull downloadProgress) {

    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

          NSDictionary *dictResponse = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];
          NSDictionary *userDict  =[dictResponse valueForKey:@"user"];
          NSLog(@"Success: %@", userDict);          
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
          NSLog(@"Failure: %@", error);
    }];
}

这篇关于在iOS中使用Oauth获得Fitbit的授权的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆