Il seguente esempio di codice utilizza la libreria client delle API di Google per .NET. Mostra come i proprietari dei contenuti di YouTube possono chiamare l'API YouTube Data (v3) per conto del proprio account proprietario dei contenuti per gestire i canali.
Nota:per interagire direttamente con le risorse dell'API Content ID (come asset e rivendicazioni) in .NET, installa il pacchetto NuGet Google.Apis.YouTubePartner.v1.
Recuperare i canali gestiti di un proprietario dei contenuti
L'esempio di codice seguente chiama il metodo channels.list dell'API YouTube Data per recuperare un elenco di canali gestiti dal proprietario dei contenuti che effettua la richiesta API.
using System; using System.Collections; using System.Collections.Generic; using System.Reflection; /* * External dependencies, OAuth 2.0 support, and core client libraries are at: * https://developers.google.com/api-client-library/dotnet/apis/ * Also see the Samples.zip file for the Google.Apis.Samples.Helper classes at: * https://github.com/youtube/api-samples/tree/master/dotnet */ using DotNetOpenAuth.OAuth2; using Google.Apis.Authentication; using Google.Apis.Authentication.OAuth2; using Google.Apis.Authentication.OAuth2.DotNetOpenAuth; using Google.Apis.Samples.Helper; using Google.Apis.Services; using Google.Apis.Util; using Google.Apis.Youtube.v3; using Google.Apis.Youtube.v3.Data; namespace dotnet { class papi_my_managed_channels { static void Main(string[] args) { CommandLine.EnableExceptionHandling(); CommandLine.DisplayGoogleSampleHeader("YouTube Partner API: My Managed Channels"); var credentials = PromptingClientCredentials.EnsureFullClientCredentials(); var provider = new NativeApplicationClient(GoogleAuthenticationServer.Description) { ClientIdentifier = credentials.ClientId, ClientSecret = credentials.ClientSecret }; var auth = new OAuth2Authenticator<NativeApplicationClient>(provider, GetAuthorization); var youtube = new YoutubeService(new BaseClientService.Initializer() { Authenticator = auth }); var contentOwnerId = CommandLine.RequestUserInput<string>("Content Owner ID"); var nextPageToken = ""; while (nextPageToken != null) { var channelsListRequest = youtube.Channels.List("snippet"); channelsListRequest.MaxResults = 50; channelsListRequest.ManagedByMe = true; channelsListRequest.OnBehalfOfContentOwner = contentOwnerId; channelsListRequest.PageToken = nextPageToken; var channelsListResponse = channelsListRequest.Fetch(); foreach (var channelItem in channelsListResponse.Items) { CommandLine.WriteLine(String.Format("{0} ({1})", channelItem.Snippet.Title, channelItem.Id)); } nextPageToken = channelsListResponse.NextPageToken; } CommandLine.PressAnyKeyToExit(); } private static IAuthorizationState GetAuthorization(NativeApplicationClient client) { var storage = MethodBase.GetCurrentMethod().DeclaringType.ToString(); var key = "storage_key"; IAuthorizationState state = AuthorizationMgr.GetCachedRefreshToken(storage, key); if (state != null) { client.RefreshToken(state); } else { state = AuthorizationMgr.RequestNativeAuthorization(client, YoutubeService.Scopes.YoutubeReadonly.GetStringValue(), YoutubeService.Scopes.Youtubepartner.GetStringValue()); AuthorizationMgr.SetCachedRefreshToken(storage, key, state); } return state; } } }