0

OAuth2 を使用して OAuth2 を実行しました - https://github.com/trongdth/OAuth2-for-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 docによると---

アクセス トークン リクエスト:- ユーザーが認証コード付与フローでアプリケーションを認証する場合、アプリケーションは認証コードをアクセス トークンと交換する必要があります。コードは 10 分間のみ有効です。

認証ヘッダー:-

Authorization ヘッダーは Basic に設定する必要があり、その後にスペースと、コロンで連結されたアプリケーションのクライアント ID とシークレットの Base64 エンコード文字列が続きます。

libを利用してこれを行いAFNetworkingました。コード(ヘッダー)をご覧ください-

-(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
                 */
            }
        }];

私は取得しています - Request failed: not found (404) error。見逃したものと、トークンを取得して Fitbit API にアクセスするにはどうすればよいですか?

更新 コードへのアクセスが原因で発生していたので、コードにアクセスしようとしましたが、このエラーが発生しています

description of error->_userInfo:
{
    NSErrorFailingURLKey = "https://api.fitbit.com/oauth2/token.json";
    NSErrorFailingURLStringKey = "https://api.fitbit.com/oauth2/token.json";
    NSLocalizedDescription = cancelled;
}

事前にどうもありがとう

4

1 に答える 1

0

Fitbit API からデータをリクエストするためにNSURLSession使用する代わりに。NSURLConnection

于 2015-12-01T12:51:05.493 に答える