使用.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
无法使用服务帐户上传,请参阅https://developers.google.com/youtube/v3/guides/moving_to_oauth#service_accounts。