Gdata YouTube загрузка не удаласьСтатус: 400 - PullRequest
0 голосов
/ 29 ноября 2011

У меня есть небольшое приложение, в котором я использую gdata для загрузки видео на YouTube.Каждый раз, когда я пытаюсь, я получаю следующую ошибку: «serviceBase: objectFetcher: failedWithStatus: 400 data: GData InvalidRequestUriException Отсутствует или неверное имя пользователя.»

Я пытался использовать свой аккаунт на YouTube или мой аккаунт Gmail, но ничего не получалось,Любая помощь будет оценена.

вот код:

NSString *devKey = DEVELOPER_KEY;

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

NSString *username = @".........@gmail.com";
NSString *clientID = CLIENT_ID;

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

// load the file data

NSString  *videoPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/output.mp4"];

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

// gather all the metadata needed for the mediaGroup
NSString *titleStr = [titleTextField 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:videoPath defaultMIMEType:@"video/mp4"];

// create the upload entry with the mediaGroup and the file data
GDataEntryYouTubeUpload *entry;

NSLog(@"%@", mimeType);

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];

}

1 Ответ

0 голосов
/ 30 ноября 2011

Код ошибки 400 - неверный запрос «Недопустимый URI или заголовок запроса или неподдерживаемый нестандартный параметр». Что в основном означает, что вы неправильно отформатировали свой запрос. Коды состояния HTTP Ссылка для объяснения всех кодов ошибок.

Не могли бы вы опубликовать код, который вы используете для загрузки видео?

EDIT: Можете ли вы загрузить, используя Пример YouTube ?

Если это работает нормально, это докажет, что devkey работает нормально. Это также покажет, что это проблема с одной из этих строк:

NSString *username = @".........@gmail.com";
NSString *clientID = CLIENT_ID;

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

NSString  *videoPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/output.mp4"];

Опять же, если образец примера YouTube работает, то проблема либо в

  1. Клиент не был аутентифицирован с вашей девки. или
  2. videoPath не является правильным местоположением.
...