2016-04-26 2 views
1

設定認証:NSMutableURLRequest <code>NSMutableURLRequest</code>の「承認」ヘッダを設定する場合は、ヘッダの私のサーバーの応答がそのヘッダーは含まれませんヘッダー

[Host] => myhost.com 
[Content-Type] => application/x-www-form-urlencoded 
[Connection] => keep-alive 
[Accept] => */* 
[User-Agent] => MyApp/1 CFNetwork/758.3.15 Darwin/15.4.0 
[Content-Length] => 327 
[Accept-Language] => en-gb 
[Accept-Encoding] => gzip, deflate 

私はドキュメントを読んで、ここでこれを設定しないことをお勧めし、だからここで私がすべきクライアント側で承認ヘッダーを設定しますか?

Authorizationヘッダの目的は、私のOAuth署名およびその他のOauth関連情報沿っ

答えて

2

を送信することですあなたはユーザーとパスワードのAPI

// Create the request 
NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:0]; 

// New Create the connection 
NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration]; 

NSURLSession *session = [NSURLSession sharedSession];//sessionWithConfiguration:defaultConfigObject delegate:self delegateQueue:[NSOperationQueue mainQueue]]; 

NSURLCredential *creds = [NSURLCredential credentialWithUser:self.username password:self.password persistence:NSURLCredentialPersistenceForSession]; 

NSString *authStr = [NSString stringWithFormat:@"%@:%@",self.username,self.password];// @"username:password"; 

NSData *authData = [authStr dataUsingEncoding:NSUTF8StringEncoding]; 

NSString *authValue = [NSString stringWithFormat: @"Basic %@",[authData base64EncodedStringWithOptions:0]]; 

// Part Important 
[request setValue:authValue forHTTPHeaderField:@"Authorization"]; 

// Or Token 
NSString *authValueToken = @"OAuth UElJRFER1A5zcGkyW16T0"; 
[request setValue:authValueToken forHTTPHeaderField:@"AuthenticatedToken"];// Authenticated API 


NSString *postLength = [NSString stringWithFormat:@"327"]; 
[request setValue:postLength forHTTPHeaderField:@"Content-Length"]; 

NSString *postLength = [NSString stringWithFormat:@"application/x-www-form-urlencoded"]; 
[request setValue:postLength forHTTPHeaderField:@"Content-Type"]; 

NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request  
    completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { 
      receivedData = [NSMutableData data]; 
      NSString* responseData = [[NSString alloc] initWithData:data encoding: NSUTF8StringEncoding]; 
      NSLog(@"%@",responseData); 
      if (error) { 
        [self handleError: error]; 
      } 
}]; 

[dataTask resume]; // <- important 

NSLog(@"Header Fields Request--->> %@",request.allHTTPHeaderFields); 
+0

Oauthデータをサーバーに送信するためにAuthorizationヘッダーを送信する必要があります。 –

+0

@AdamCarter質問を更新して、これがOAuthに固有であることを含めてください。 – quellish

2

を持っているドキュメントは、それが通常であるので、それを設定しないことをお勧めします間違ったやり方。ほとんどの認証では、認証完了ハンドラ内に実際のNSURLCredentialオブジェクトを作成する必要があります。また、リソースへの最初のアクセスが失敗した後にのみ行う必要があります。

残念ながら、AFAIKはOSにOAuthをサポートしていないので、まずはヘッダを指定して、間違いなくそのホスト名に他の認証情報を追加しないようにしてください。もしあなたがそうしたならばあなたのAuthorizationヘッダーが踏ん張られることになります)。

関連する問題