4

アプリで 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 週間前に始まりました。これが私のアプリの問題のサーバー側の問題であるかどうかはわかりません。誰も同じ問題を抱えていますか?

4

0 に答える 0