1

这是我的代码,可以成功将视频上传到 youtube。它正在使用用户名和密码,但我将使用访问令牌。非常感谢。

GDataServiceGoogleYouTube *service = [self youTubeService];
NSURL *url = [GDataServiceGoogleYouTube youTubeUploadURLForUserID:kGDataServiceDefaultUser
                                                             clientID:@"test"];
    NSData *data = [NSData dataWithContentsOfFile:videoPath];
    NSString *filename = [videoPath lastPathComponent];
    GDataMediaTitle *title = [GDataMediaTitle textConstructWithString:strVideoTitle_];
    GDataMediaCategory *category = [GDataMediaCategory mediaCategoryWithString:strCategory_];
    [category setScheme:kGDataSchemeYouTubeCategory];
    GDataMediaDescription *desc = [GDataMediaDescription textConstructWithString:strVideoDescription];
    GDataMediaKeywords *keywords = [GDataMediaKeywords keywordsWithString:strkeyWord_];
    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"]; 
    GDataEntryYouTubeUpload *entry;
    entry = [GDataEntryYouTubeUpload uploadEntryWithMediaGroup:mediaGroup
                                                          data:data
                                                      MIMEType:mimeType
                                                          slug:filename];
    SEL progressSel = @selector(ticket:hasDeliveredByteCount:ofTotalByteCount:);
    [service setServiceUploadProgressSelector:progressSel];
    gDataServiceTicket_ =  [[service fetchEntryByInsertingEntry:entry
                                       forFeedURL:url
                                         delegate:self
                                didFinishSelector:@selector(uploadTicket:finishedWithEntry:error:)] retain];
4

1 回答 1

0

感谢这个话题:http://stackoverflow.com/questions/8228212/gdata-java-client-oauth2-access-token-secret,我通过修改gdata解决了这个问题。

首先,修改文件 GDataServiceGoogle.m 中的 requestForURL 函数,如下所示:

...
// add the auth token to the header if ([authToken length] > 0) 
{ 
//NSString *value = [NSString stringWithFormat:@"GoogleLogin auth=%@", authToken]; 
NSString *value = [NSString stringWithFormat:@"Bearer %@", authToken]; 
[request setValue:value forHTTPHeaderField: @"Authorization"]; } 
else if ([authSubToken_ length] > 0) 
{ NSString *value = [NSString stringWithFormat:@"AuthSub token=%@", authSubToken_]; 
[request setValue:value forHTTPHeaderField: @"Authorization"]; 
} 
return request;

其次,在youTubeService函数中添加:

//[服务setUserCredentialsWithUsername:StrUserName_密码:StrPassword_]; 不再需要

[服务 setAuthToken:@"我的访问令牌"];

此外,我使用最新版本的 gdata。

于 2012-11-29T06:41:11.097 回答