iPhone Загрузить видео в приложение YouTube с помощью GData Framework - PullRequest
7 голосов
/ 19 марта 2012

Я хочу загрузить видео из моего приложения на YouTube.Я использую пример YoutubeTest для этой цели.Я установил ключ разработчика и идентификатор клиента для своего приложения.Теперь при попытке загрузить видео, используя пример исходного кода, он показывает ошибку:

2012-03-19 10: 51: 07.947 YouTubeTest [539: f803] serviceBase: objectFetcher: failedWithStatus:400 data: 2012-03-19 10: 51: 07.985 YouTubeTest [539: f803] Ошибка: ошибка Domain = com.google.GDataServiceDomain Code = 400 "Операция не может быть завершена. (Com.google.GDataServiceDomain ошибка 400.) "UserInfo = 0x6c49e50 {}

Кто-нибудь успешно реализовал GData для загрузки видео на YouTube из приложения iphone.Может ли кто-нибудь дать мне пример исходного кода.

Ответы [ 4 ]

3 голосов
/ 19 марта 2012

Да, конечно, многие успешно реализовали это ... хммм, попробуйте эту ссылку http://urinieto.com/category/google/ следуйте инструкциям построчно.

Не уверен, что вы получаете эту ошибку. Следуйте инструкциям выше, если проблема не устранена, я помогу вам.

Приветствия

2 голосов
/ 02 апреля 2012

У меня та же проблема с приложением YouTubeTest. Вот код запроса:

(IBAction)uploadPressed:(id)sender {

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

}
1 голос
/ 18 июля 2012

Я столкнулся с той же ошибкой. Но я нашел решение методом проб и ошибок:)

На самом деле, как утверждает сам Youtube

enter image description here

Вам больше не нужно указывать Client_Id. Пожалуйста, удалите его.

Но настоящая проблема была с учетными данными для входа. API возвращал ответ об ошибке при входе в систему под именем «xyz@gmail.com». Он начал работать, когда я указал только имя пользователя без домена "xyz".

Надеюсь, это поможет!

1 голос
/ 03 апреля 2012

Решил мою проблему. Информация об ошибке в вашем случае недостаточно. Но если вы распечатываете HTTPURLResponse с сервера, это поможет определить ошибку. В моем случае длина ключевых слов была слишком длинной.

...