使用后端错误代码:-32099的某些用户在100%进度后,Youtube视频上传失败

时间:2013-11-08 12:35:47

标签: ios iphone youtube-api google-api-objc-client

我在我的应用中使用google api的objective-C客户端添加了youtube api v3,以便将视频上传到youtube。该应用的测试人员(在不同国家/地区)报告他们无法将视频上传到YouTube。在后端错误达到100%进度后,视频上传失败。我在印度最终没有遇到这个问题。测试人员还确认,使用youtube ios应用程序或其他应用程序上传时,YouTube视频上传工作正常。他们还尝试从多个帐户上传视频,但效果相同。

设备控制台的错误日志是:

Error Domain=com.google.GTLJSONRPCErrorDomain Code=-32099 "The operation couldn’t be completed. (Backend Error)" UserInfo=0x2438c380 {error=Backend Error, GTLStructuredError=GTLErrorObject 0x27ea3990: {message:"Backend Error" code:-32099 data:[1]}, NSLocalizedFailureReason=(Backend Error)} 

我用来将视频上传到youtube的代码是:

GTMOAuth2Authentication *auth = [GTMOAuth2ViewControllerTouch authForGoogleFromKeychainForName:YoutubeOAuthKeyChain clientID:GoogleAPIClientID clientSecret:GoogleAPIClientSecret];
if (!auth) {
    [self signInToGoogle];
}else{
    if ([auth canAuthorize] && auth.userEmail) {
        //Force the api to refresh access token if needed
        [auth authorizeRequest:Nil completionHandler:^(NSError *error) {
           dispatch_async(dispatch_get_main_queue(), ^{
               if (!error) {
                   NSLog(@"Youtube: App authorized. Uploading video now");

                   self.youTubeService.authorizer = auth;
                   GTLYouTubeVideoStatus *status = [GTLYouTubeVideoStatus object];

                   status.privacyStatus = @"public";

                   GTLYouTubeVideoSnippet *snippet = [GTLYouTubeVideoSnippet object];
                   snippet.title  = _captionTextView.text;

                   snippet.descriptionProperty = @"This is a test video";

                   GTLYouTubeVideo *video = [GTLYouTubeVideo object];
                   video.status = status;
                   video.snippet = snippet;
                   NSString *filename = [_moviePath lastPathComponent];
                   NSFileHandle *fileHandle = [NSFileHandle fileHandleForReadingAtPath:_moviePath];
                   if (fileHandle) {
                       NSString *mimeType = [self MIMETypeForFilename:filename
                                                      defaultMIMEType:@"video/mp4"];
                       GTLUploadParameters *uploadParameters = [GTLUploadParameters uploadParametersWithFileHandle:fileHandle MIMEType:mimeType];
                       uploadParameters.uploadLocationURL = nil;
                       //uploadParameters.shouldSendUploadOnly = YES;

                       GTLQueryYouTube *query = [GTLQueryYouTube queryForVideosInsertWithObject:video  part:@"snippet,status" uploadParameters:uploadParameters];

                       GTLServiceYouTube *service = self.youTubeService;

                       GTLServiceTicket *ticket = [service executeQuery:query completionHandler:^(GTLServiceTicket *ticket, id object, NSError *error) {
                           dispatch_async(dispatch_get_main_queue(), ^{

                               if (!error) {
                                   NSLog(@"Youtube video upload completed ");

                               }else{
                                    NSLog(@"error completing request with error: %@", error);                               
                               }

                           });


                       }];
                       [ticket setUploadProgressBlock:^(GTLServiceTicket *ticket, unsigned long long totalBytesWritten, unsigned long long totalBytesExpectedToWrite) {

                               float progress = ((float)totalBytesWritten / (float)totalBytesExpectedToWrite) * 100.0f;
                               NSLog(@"%f %% uploaded");


                       }];
                   }

               }else{
                   //Error authorizing the request

                   NSLog(@"error authorizing request with error: %@", error);
               }

           });
        }]; 
    }else{
        //Refresh access token
        [self signInToGoogle];
    }

}

此问题仅在2周前开始。我不知道这是否是我的应用程序的某些问题的服务器端问题。有人也有同样的问题吗?

0 个答案:

没有答案