如何使用访问令牌在objective-c中使用gdata将视频上传到youtube

时间:2012-11-22 07:54:33

标签: objective-c youtube

这是我的代码,可以成功将视频上传到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];

1 个答案:

答案 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。

相关问题