7

YouTubeAPIのサンプルコードを使用して動画をアップロードしようとしています。アップロードボタンを押すと、プログレスバーは処理を終了しますが、ポイントの終わりに達するとエラーが発生します。エラーの説明は次のとおりです。

YouTubeTest [2149:f803]エラー-エラーDomain = com.google.GDataServiceDomain Code = 400 "操作を完了できませんでした。(com.google.GDataServiceDomainエラー400)" UserInfo = 0x69d5bd0 {}

これは、アップロードボタンが押されたコードです

- (IBAction)uploadPressed:(id)sender {
    [self.view resignFirstResponder];
    NSString *devKey = [mDeveloperKeyField text];

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

    NSString *username = [mUsernameField text];
    NSString *clientID = [mClientIDField text];

    NSURL *url = [GDataServiceGoogleYouTube youTubeUploadURLForUserID:username
                                                             clientID:clientID];

    // load the file data
    NSString *path = [[NSBundle mainBundle] pathForResource:@"YouTubeTest" ofType:@"m4v"]; 
    NSData *data = [NSData dataWithContentsOfFile:path];
    NSString *filename = [path lastPathComponent];

    // gather all the metadata needed for the mediaGroup
    NSString *titleStr = [mTitleField text];
    GDataMediaTitle *title = [GDataMediaTitle textConstructWithString:titleStr];

    NSString *categoryStr = [mCategoryField text];
    GDataMediaCategory *category = [GDataMediaCategory mediaCategoryWithString:categoryStr];
    [category setScheme:kGDataSchemeYouTubeCategory];

    NSString *descStr = [mDescriptionField text];
    GDataMediaDescription *desc = [GDataMediaDescription textConstructWithString:descStr];

    NSString *keywordsStr = [mKeywordsField text];
    GDataMediaKeywords *keywords = [GDataMediaKeywords keywordsWithString:keywordsStr];

    BOOL isPrivate = mIsPrivate;

    GDataYouTubeMediaGroup *mediaGroup = [GDataYouTubeMediaGroup mediaGroup];
    [mediaGroup setMediaTitle:title];
    [mediaGroup setMediaDescription:desc];
    [mediaGroup addMediaCategory:category];
    [mediaGroup setMediaKeywords:keywords];
    [mediaGroup setIsPrivate:isPrivate];

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

    // create the upload entry with the mediaGroup and the file data
    GDataEntryYouTubeUpload *entry;
    entry = [GDataEntryYouTubeUpload uploadEntryWithMediaGroup:mediaGroup
                                                          data:data
                                                      MIMEType:mimeType
                                                          slug:filename];

    SEL progressSel = @selector(ticket:hasDeliveredByteCount:ofTotalByteCount:);
    [service setServiceUploadProgressSelector:progressSel];

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

    [self setUploadTicket:ticket];

}

APIダッシュボードから開発者キーとクライアントキーを正しく設定しました。

私はこれをシミュレーターで実行しています。シミュレーターから動画をアップロードできないのですか?

どこがおかしいのか教えてください。

4

1 に答える 1

3

エラー解決...Googleアカウントを使用して動画をYouTubeにアップロードする場合、GData Objective-Cの一部の機能ではGmailアカウントがパラメーターとして必要であり、一部の機能ではYouTubeリンクアカウントがパラメーターとして必要です。

'-(void)setUserCredentialsWithUsername:(NSString *)username password:(NSString *)password;'を呼び出す場合 GDataServiceBaseでは、ユーザー名は「x ... @ gmail.com」などのGmailアカウントであり、パスワードはGmailアカウントのパスワードである必要があります。

ただし、「+(NSURL *)youTubeUploadURLForUserID:(NSString *)userID clientID:(NSString *)clientID;」を呼び出すと GDataServiceGoogleYouTubeでは、userIDパラメータはYouTubeにリンクされたアカウントであり、passwordはGmailアカウントのパスワードである必要があります。

私はemail_id@gmail.comを使用してログインしていましたが、現在はemail_idを使用してログインしています。なんてばかげたエラーです!..しかし、解決するのに丸2日かかりました..うーん.. !!

于 2012-06-12T21:05:14.980 に答える