.NET Kod Örnekleri

Aşağıdaki kod örneğinde .NET için Google API'leri istemci kitaplığı kullanılmaktadır. Bu örnekte, YouTube içerik sahiplerinin kanalları yönetmek için içerik sahibi hesapları adına YouTube Data API'yi (v3) nasıl çağırabileceği gösterilmektedir.

Not: .NET'te Content ID API kaynaklarıyla (ör. öğeler ve hak talepleri) doğrudan etkileşim kurmak için Google.Apis.YouTubePartner.v1 NuGet paketini yükleyin.

İçerik sahibinin yönetilen kanallarını alma

Aşağıdaki kod örneği, API isteğini yapan içerik sahibi tarafından yönetilen kanalların listesini almak için YouTube Data API'nin channels.list yöntemini çağırır.

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;
    }
  }
}