3

GData APIを使用して、iPhoneアプリケーション内からYouTubeに動画を投稿しようとしています。これが私が使用しているコードです:

GDataServiceGoogleYouTube* service = [self youTubeService];
[service setYouTubeDeveloperKey:youtubeAppKey];

NSString *username = service.username;
NSURL *url = [GDataServiceGoogleYouTube youTubeUploadURLForUserID:username];

NSData *data = [NSData dataWithContentsOfFile:self.videoPath];
NSString *filename = @"My Cool Video";
NSString *titleStr = @"Title";
GDataMediaTitle *mediaTitle = [GDataMediaTitle textConstructWithString:titleStr];

NSString *categoryStr = @"Comedy";
GDataMediaCategory *mediaCategory = [GDataMediaCategory mediaCategoryWithString:categoryStr];
[mediaCategory setScheme:kGDataSchemeYouTubeCategory];

NSString *descStr = @"Description";
GDataMediaDescription *mediaDesc = [GDataMediaDescription textConstructWithString:descStr];

NSString *keywordsStr = @"iOS";
GDataMediaKeywords *mediaKeywords = [GDataMediaKeywords keywordsWithString:keywordsStr];

GDataYouTubeMediaGroup *mediaGroup = [GDataYouTubeMediaGroup mediaGroup];
[mediaGroup setMediaTitle:mediaTitle];
[mediaGroup setMediaDescription:mediaDesc];
[mediaGroup addMediaCategory:mediaCategory];
[mediaGroup setMediaKeywords:mediaKeywords];
[mediaGroup setIsPrivate:isPrivate];

NSString *mimeType = [GDataUtilities MIMETypeForFileAtPath:self.videoPath
                                           defaultMIMEType:@"video/mp4"];

GDataEntryYouTubeUpload *entry = [GDataEntryYouTubeUpload uploadEntryWithMediaGroup:mediaGroup
                                                                               data:data
                                                                           MIMEType:mimeType
                                                                               slug:filename];

GDataServiceTicket *ticket = [service fetchEntryByInsertingEntry:entry
                                                      forFeedURL:url
                                                        delegate:self
                                               didFinishSelector:@selector(uploadTicket:finishedWithEntry:error:)];
[self setUploadTicket:ticket];

そして、私はこの応答を持っています:

serviceBase:objectFetcher:GTMHTTPUploadFetcher 0x48af0a0(https://uploads.gdata.youtube.com/resumable/feeds/api/users/myCoolMail@gmail.com/uploads?upload_id=heregoesidiremoved)failedWithStatus:400 data:GDataInvalidRequestUriException例外メッセージは利用できません

Googleのサンプルコードを試しましたが、同じ結果になりました。デバイスとシミュレーター(5.0)を使用しました。iPhoneから録画したものであれば、用意した動画を試してみました。Google APIセクションでプロジェクトを作成し、アプリケーションキーを取得しました。

問題の解決策を見つけるのを手伝ってください!

4

1 に答える 1

10

問題はここにありました:

NSString *username = service.username;
NSURL *url = [GDataServiceGoogleYouTube youTubeUploadURLForUserID:username];

その理由はわかりませんが、userIDを「username」からkGDataServiceDefaultUserに変更すると、機能し始めました。とてもシンプルで奇妙ですが、それでうまくいきました。

正しいコード:

NSURL *url = [GDataServiceGoogleYouTube youTubeUploadURLForUserID:kGDataServiceDefaultUser];
于 2012-06-10T16:05:07.820 に答える