create playlist in Youtube api

后端 未结 2 1470
情话喂你
情话喂你 2021-01-07 11:49

I\'ve looked at Youtube\'s documentation but I don\'t seem to understand how to create a playlist for the user specifically for ios. I know the user needs to sign in using O

相关标签:
2条回答
  • 2021-01-07 12:36

    Here is update!

    Client library from Google was updated.

    Documentation: YouTube Data API Overview

    Playlist documentation: Playlists: insert

    GitHub client library: Google APIs Client Library for Objective-C For REST

    Here are pods need to be install:

    pod 'GTMSessionFetcher'
    pod 'GTMOAuth2'
    pod 'GoogleAPIClientForREST/YouTube’
    

    If we think that we have clientID, clientSecret and scope (read documentation) then we can create viewController for authentication:

    GTMOAuth2ViewControllerTouch *viewController = [[GTMOAuth2ViewControllerTouch alloc]
                                                        initWithScope:scope
                                                        clientID:kMyClientID
                                                        clientSecret:kMyClientSecret
                                                        keychainItemName: nil
                                                        completionHandler:
                                                        ^(GTMOAuth2ViewControllerTouch *viewController, GTMOAuth2Authentication *auth, NSError *error) {
                                                            [self dismissViewControllerAnimated:NO completion:nil];
                                                            if (!error)
                                                            {
                                                                GTLRYouTubeService *youTubeService = [[GTLRYouTubeService alloc] init];
                                                                youTubeService.authorizer = auth;
                                                                [self createPlaylistWithTitle: @"Title" description: @"description" youtubeService: youtubeService];
                                                            }
                                                        }];
    [self presentViewController:viewController animated:YES completion:nil];
    

    Method that creates private playlist:

    - (void)createPlaylistWithTitle:(NSString *)playlistTitle description:(NSString *)playlistDescription youtubeService:(GTLRYouTubeService *)youTubeService
    {
        GTLRYouTube_Playlist *playlist = [[GTLRYouTube_Playlist alloc] init];
    
        GTLRYouTube_PlaylistSnippet *playlistSnippet = [[GTLRYouTube_PlaylistSnippet alloc] init];
        playlistSnippet.title = playlistTitle;
        playlistSnippet.descriptionProperty = playlistDescription;
    
        GTLRYouTube_PlaylistStatus *playlistStatus = [[GTLRYouTube_PlaylistStatus alloc] init];
        playlistStatus.privacyStatus = @"private";
    
        playlist.snippet = playlistSnippet;
        playlist.status = playlistStatus;
    
        GTLRYouTubeQuery_PlaylistsInsert *query = [GTLRYouTubeQuery_PlaylistsInsert queryWithObject:playlist part:@"snippet,status"];
        [youTubeService executeQuery:query completionHandler:^(GTLRServiceTicket *ticket, id object, NSError *error) {
            if (!error)
            {
                NSLog(@"response: %@", object);
            }
        }];
    }
    
    0 讨论(0)
  • 2021-01-07 12:49

    You are correct, you need to grant apps access to create a playlist by using OAuth 2.0. It is generally a best practice to request scopes incrementally at the time access is required rather than up front.

    Here's a code snippet how to create a playlist via YouTube API in IOS:

    GTMOAuth2ViewControllerTouch *viewController = [[GTMOAuth2ViewControllerTouch alloc]
    initWithScope:scope
    clientID:clientId
    clientSecret:clientSecret
    keychainItemName:keychainItemName
    completionHandler:
    ^(GTMOAuth2ViewControllerTouch *viewController, GTMOAuth2Authentication *auth, NSError *error) {
    if (error) {
    [SVProgressHUD showErrorWithStatus:error.localizedDescription];
    } else {
    GTLServiceYouTube *service = [FZMYoutubeSearchService sharedYoutubeService];
    service.authorizer = auth;
    
    GTLYouTubePlaylist *playlist = [[GTLYouTubePlaylist alloc] init];
    
    GTLYouTubePlaylistSnippet *playlistSnippet = [[GTLYouTubePlaylistSnippet alloc] init];
    playlistSnippet.title = @"this is my great playlist";
    playlistSnippet.descriptionProperty = @"and this is description";
    
    GTLYouTubePlaylistStatus *playlistStatus = [[GTLYouTubePlaylistStatus alloc] init];
    playlistStatus.privacyStatus = @"private";
    
    playlist.snippet = playlistSnippet;
    playlist.status = playlistStatus;
    
    GTLQueryYouTube *query = [GTLQueryYouTube    queryForPlaylistsInsertWithObject:playlist part:@"snippet,status"];
    [service executeQuery:query completionHandler:^(GTLServiceTicket *ticket,      id object, NSError *error) {
    if (error) {
    NSLog(@"error: %@", error);
    
    0 讨论(0)
提交回复
热议问题