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 に次のものが追加されました。

//[service setUserCredentialsWithUsername:StrUserName_ password:StrPassword_]; もういらない

[service setAuthToken:@"my access token"];

さらに、最新バージョンの gdata を使用しています。

于 2012-11-29T06:41:11.097 に答える