使用.net YouTube数据API时出现错误,youtube.videos.insert

本文关键字:错误 youtube videos insert YouTube net 数据 API 使用 | 更新日期: 2023-09-27 18:13:36

我正在尝试使用google . api .YouTube上传av视频。我已经创建了一个服务帐户,下载了一个P12密钥文件,并启用了YouTube Data API v3。

这是我第一次尝试任何谷歌API,我可能错过了显而易见的。

我得到以下错误;

YouTube Data API: Upload Video
==============================
An error prevented the upload from completing.
System.Net.Http.HttpRequestException: Response status code does not indicate success: 401 (Unauthorized).
   ved Microsoft.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   ved Microsoft.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccess(Task task)
   ved Google.Apis.Upload.ResumableUpload`1.<UploadAsync>d__0.MoveNext() i c:'code'google.com'google-api-dotnet-client'default'Tools'Google.Apis.Release'bin'Debug'output'default'Src'GoogleApis'Apis'[Media]'Upload'ResumableUpload.cs:linje 0
An error prevented the upload from completing.
System.ArgumentNullException: Verdien kan ikke være null.
Parameternavn: baseUri
   ved Microsoft.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   ved Microsoft.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccess(Task task)
   ved Google.Apis.Upload.ResumableUpload`1.<UploadCoreAsync>d__e.MoveNext() i c:'code'google.com'google-api-dotnet-client'default'Tools'Google.Apis.Release'bin'Debug'output'default'Src'GoogleApis'Apis'[Media]'Upload'ResumableUpload.cs:linje 459

我的代码;

private async Task Run()
{
    String serviceAccountEmail = "xxx@developer.gserviceaccount.com";
    var certificate = new X509Certificate2(@"key.p12", "notasecret", X509KeyStorageFlags.Exportable);
    ServiceAccountCredential credential = new ServiceAccountCredential(
       new ServiceAccountCredential.Initializer(serviceAccountEmail)
       {
           Scopes = new[] { YouTubeService.Scope.YoutubeUpload }
       }.FromCertificate(certificate));

    var youtubeService = new YouTubeService(new BaseClientService.Initializer()
    {
        HttpClientInitializer = credential,
        ApplicationName = Assembly.GetExecutingAssembly().GetName().Name
    });

    var video = new Google.Apis.YouTube.v3.Data.Video();
    video.Snippet = new VideoSnippet();
    video.Snippet.Title = "Default Video Title";
    video.Snippet.Description = "Default Video Description";
    video.Snippet.Tags = new string[] { "tag1", "tag2" };
    video.Snippet.CategoryId = "22"; 
    video.Status = new VideoStatus();
    video.Status.PrivacyStatus = "unlisted"; // or "private" or "public"
    var filePath = @"E:'OneDrive'CidWebApps'video.mp4"; 
    using (var fileStream = new FileStream(filePath, FileMode.Open))
    {
        var videosInsertRequest = youtubeService.Videos.Insert(video, "snippet,status", fileStream, "video/*");
        videosInsertRequest.ProgressChanged += videosInsertRequest_ProgressChanged;
        videosInsertRequest.ResponseReceived += videosInsertRequest_ResponseReceived;

        await videosInsertRequest.UploadAsync();
    }
}

的问候Jon Ivar

使用.net YouTube数据API时出现错误,youtube.videos.insert

无法使用服务帐户上传,请参阅https://developers.google.com/youtube/v3/guides/moving_to_oauth#service_accounts。