2015-01-04 3 views
0

iPhone 앱에서 YouTube API v3.0을 사용하고 있으며 이미 Google plus API를 사용하여 YouTube 인증을 처리했습니다. 지금은iOS Youtube API v3 YouTube 채널 구독

NSString *URLString = [NSString stringWithFormat:@"https://www.googleapis.com/youtube/v3/subscriptions?part=snippet&key=%@", API_KEY]; 

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 

AFHTTPRequestSerializer *requestSerializer = [AFHTTPRequestSerializer serializer]; 

[requestSerializer setValue:[AOTube accessToken] forHTTPHeaderField:@"Authorization"]; 
[requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 

manager.requestSerializer = requestSerializer; 

NSDictionary *parameters = @{@"snippet":@{ 
            @"resourceId":@{ 
              @"channelId":CHANNEL_ID, 
              @"kind":@"youtube#channel" 
              } 
            } 
          }; 

[manager POST:URLString parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) { 

    success(responseObject); 

} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 

    failure(error); 

}]; 

내 코드에 따라서

https://developers.google.com/youtube/v3/docs/subscriptions/insert#examples

은 .. 내가 실패 블록에서 다음 오류가 발생했습니다 .. 링크에서 여기에 예를 들어 다음과 유튜브 채널에 가입해야합니다. .

Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: unauthorized (401)" UserInfo=0x7f8983d5cab0 {com.alamofire.serialization.response.error.response=<NSHTTPURLResponse: 0x7f8983d40ca0> { URL: https://www.googleapis.com/youtube/v3/subscriptions?part=snippet&key=AIzaSyB1mipmXC8dmXduIJXJ7qt9CxmLlnuc8aw } { status code: 401, headers { 
"Cache-Control" = "private, max-age=0"; 
"Content-Encoding" = gzip; 
"Content-Length" = 162; 
"Content-Type" = "application/json; charset=UTF-8"; 
Date = "Sun, 04 Jan 2015 22:00:55 GMT"; 
Expires = "Sun, 04 Jan 2015 22:00:55 GMT"; 
Server = GSE; 
Vary = "Origin, X-Origin"; 
"Www-Authenticate" = "Bearer realm=\"https://accounts.google.com/AuthSubRequest\""; 
"alternate-protocol" = "443:quic,p=0.02"; 
"x-content-type-options" = nosniff; 
"x-frame-options" = SAMEORIGIN; 
"x-xss-protection" = "1; mode=block"; 
} }, NSErrorFailingURLKey=https://www.googleapis.com/youtube/v3/subscriptions?part=snippet&key=ewrqDSyB1sfrgdmXduIJfwrgrwgLlnuc8aw, com.alamofire.serialization.response.error.data=<7b0a2022 6572726f 72223a20 7b0a2020 22657272 6f727322 3a205b0a 2020207b 0a202020 2022646f 6d61696e 223a2022 676c6f62 616c222c 0a202020 20227265 61736f6e 223a2022 61757468 4572726f 72222c0a 20202020 226d6573 73616765 223a2022 496e7661 6c696420 43726564 656e7469 616c7322 2c0a2020 2020226c 6f636174 696f6e54 79706522 3a202268 65616465 72222c0a 20202020 226c6f63 6174696f 6e223a20 22417574 686f7269 7a617469 6f6e220a 2020207d 0a20205d 2c0a2020 22636f64 65223a20 3430312c 0a202022 6d657373 61676522 3a202249 6e76616c 69642043 72656465 6e746961 6c73220a 207d0a7d 0a>, NSLocalizedDescription=Request failed: unauthorized (401)} 

내가 API_KEY, CHANNEL_ID, 나는 이미 다른 웹 서비스의 성공을 사용하고 있기 때문에 액세스 토큰에 대한 아무 문제가 없다는 것을 확신 완전히

+0

이 문제가 해결 되었습니까? 도와주세요. –

답변

0

권한 부여 헤더 필드를 올바르게 설정하지 않았습니다.

대신 :

[requestSerializer setValue:[AOTube accessToken] forHTTPHeaderField:@"Authorization"]; 

사용 :

NSString *authValue = [NSString stringWithFormat:@"Bearer %@", [AOTube accessToken]]; 

[requestSerializer setValue: authValue forHTTPHeaderField:@"Authorization"]; 

다음에 요청 시리얼 라이저를 수정 : 인증 과정에서

AFHTTPRequestSerializer *requestSerializer = [AFJSONRequestSerializer serializer]; 

다음 범위 중 하나 이상을 추가 https://www.googleapis.com/auth/youtubepartner 또는 https://www.googleapis.com/auth/youtube

샘플 : 당신이 적절한 구글 API를 사용하여 로그인 한 경우

signIn.scopes = @[ kGTLAuthScopePlusLogin, @"https://www.googleapis.com/auth/youtube" ]; 

당신이 URL에서 API 키 요청 매개 변수를 포함해야하지 않습니다.

+0

저를 좀 더 도와 주실 수 있습니까? 같은 오류가 나타납니다. –