这是我的代码,可以成功将视频上传到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];
答案 0 :(得分: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中添加:
// [service setUserCredentialsWithUsername:StrUserName_ password:StrPassword_];不再需要了
[service setAuthToken:@“my access token”];
此外,我使用的是最新版本的gdata。