#c#
Вопрос:
Вот код, который я использовал для загрузки видео с локального хоста на YouTube.
namespace YouTubeUpload_Console {
internal class UploadVideo {
[STAThread]
static void Main(string[] args) {
Console.WriteLine("YouTube Data API: Upload Video");
Console.WriteLine("==============================");
try {
new UploadVideo().Run().Wait();
} catch (AggregateException ex) {
foreach(var e in ex.InnerExceptions) {
Console.WriteLine("Error: " e.Message);
}
}
Console.WriteLine("Press any key to continue...");
Console.ReadKey();
}
private async Task Run() {
try {
string[] scopes = new string[] {
YouTubeService.Scope.YoutubeUpload,
YouTubeService.Scope.Youtube
};
GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow(new GoogleAuthorizationCodeFlow.Initializer {
ClientSecrets = new ClientSecrets {
ClientId = "", //< -Put your own values here
ClientSecret = "" //< //-Put your own values here
},
Scopes = scopes,
DataStore = new FileDataStore("Daimto.YouTube.Auth.Store")
});
TokenResponse token = new TokenResponse {
AccessToken = "", //-Put your own values here
RefreshToken = "", //-Put your own values here
TokenType = "Bearer",
ExpiresInSeconds = 3600
};
UserCredential credential1 = new UserCredential(flow, Environment.UserName, token);
var youtubeService = new YouTubeService(new BaseClientService.Initializer() {
HttpClientInitializer = credential1,
ApplicationName = "" // //-Put your own values heree
});
var video = new 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 = "UCycmrK4RRMNY6CTn58r6gNA"; // See https://developers.google.com/youtube/v3/docs/videoCategories/list
video.Status = new VideoStatus();
video.Status.PrivacyStatus = "public"; // or "private" or "public"
var filePath = @ "C:UsersadminDownloadsbig_buck_bunny_720p_1mb.mp4"; // Replace with path to actual movie file.
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();
}
} catch (Exception ex) {
throw ex;
}
}
void videosInsertRequest_ProgressChanged(Google.Apis.Upload.IUploadProgress progress) {
switch (progress.Status) {
case UploadStatus.Uploading:
Console.WriteLine("{0} bytes sent.", progress.BytesSent);
break;
case UploadStatus.Failed:
Console.WriteLine("An error prevented the upload from completing.n{0}", progress.Exception);
break;
}
}
void videosInsertRequest_ResponseReceived(Video video) {
Console.WriteLine("Video id '{0}' was successfully uploaded.", video.Id);
}
}
}
Ошибка, которую я получил, заключается в :
API данных YouTube: Загрузка видео
Ошибка не позволила завершить загрузку. Google.Api.Auth.OAuth2.Ответы.Исключение TokenResponseException: Ошибка:»неавторизованный клиент», Описание:»Неавторизованный», Uri:»» в Google.Api.Auth.OAuth2.Ответы.TokenResponse.d__36.MoveNext() в C:Apiary2021-02-09.10-36-01SrcSupportGoogle.Apis.AuthOAuth2ОтветыTokenResponse.cs:строка 141 — Конец трассировки стека из предыдущего местоположения, где было выдано исключение — в System.Runtime.Услуги компиляторов.Дежурный.ThrowForNonSuccess(Задача задачи) в System.Runtime.Услуги компиляторов.Дежурный.HandleNonSuccessAndDebuggerNotification(Задание задачи) в Google.Api.Auth.OAuth2.Запросы.Tokenrequestextensions.d__1.MoveNext() в C:Apiary2021-02-09.10-36-01SrcSupportGoogle.Apis.AuthOAuth2Запросыtokenrequestextensions.cs:строка 57 — Конец трассировки стека из предыдущего местоположения, где было выдано исключение — в System.Runtime.Услуги компиляторов.Дежурный.ThrowForNonSuccess(Задача задачи) в System.Runtime.Услуги компиляторов.Дежурный.HandleNonSuccessAndDebuggerNotification(задача) в Google.Api.Авт.OAuth2.Потоки.AuthorizationCodeFlow.d__35.MoveNext() в C:Apiary2021-02-09.10-36-01SrcSupportGoogle.Apis.AuthOAuth2ПотокиAuthorizationCodeFlow.cs:строка 313 — Конец трассировки стека из предыдущего места, где было выдано исключение — в Google.Api.Auth.OAuth2.Потоки.AuthorizationCodeFlow.d__35.MoveNext() в C:Apiary2021-02-09.10-36-01SrcSupportGoogle.Apis.AuthOAuth2ПотокиAuthorizationCodeFlow.cs:строка 329 — Конец трассировки стека из предыдущего местоположения, где было выдано исключение — в System.Runtime.Услуги компиляторов.Дежурный.Бросьте успешный процесс(Задание задачи) в систему.Время выполнения.Услуги компиляторов.Дежурный.HandleNonSuccessAndDebuggerNotification(Задание задачи) в Google.Api.Auth.OAuth2.Потоки.AuthorizationCodeFlow.d__31.MoveNext() в C:Apiary2021-02-09.10-36-01SrcSupportGoogle.Apis.AuthOAuth2ПотокиAuthorizationCodeFlow.cs:строка 262 — Конец трассировки стека из предыдущего местоположения, где было вызвано исключение — в System.Runtime.Услуги компиляторов.Дежурный.ThrowForNonSuccess(Задача задачи) в System.Runtime.Услуги компиляторов.Дежурный.HandleNonSuccessAndDebuggerNotification(задача) в Google.Api.Авт.OAuth2.Учетные данные пользователя.d__22.MoveNext() в C:Apiary2021-02-09.10-36-01SrcSupportGoogle.Apis.AuthOAuth2UserCredential.cs:строка 157 — Конец трассировки стека из предыдущего местоположения, где было выдано исключение — в System.Runtime.Услуги компиляторов.Дежурный.ThrowForNonSuccess(Задача задачи) в System.Runtime.Услуги компиляторов.Дежурный.HandleNonSuccessAndDebuggerNotification(Задание задачи) в Google.Api.Auth.OAuth2.TokenRefreshManager.d__12.MoveNext() в C:Apiary2021-02-09.10-36-01SrcSupportGoogle.Apis.AuthOAuth2TokenRefreshManager.resulttaskfromresulttask cs:строка 129 — Конец трассировки стека из предыдущего местоположения, где было создано исключение — в System.Runtime.Исключительные услуги.ExceptionDispatchInfo.Бросьте() в Google.Api.Auth.OAuth2.TokenRefreshManager.ResultWithUnwrappedExceptions[T](Задача 1 task) in C:Apiary2021-02-09.10-36-01SrcSupportGoogle.Apis.AuthOAuth2TokenRefreshManager.cs:line 174 at Google.Apis.Auth.OAuth2.TokenRefreshManager.<>c.<GetAccessTokenForRequestAsync>b__10_0(Task
1 задача) в C:Apiary2021-02-09.10-36-01SrcSupportGoogle.Apis.AuthOAuth2TokenRefreshManager.cs:строка 109 в системе.Нарезание резьбы.Задачи.Продолжение 2.InnerInvoke() at System.Threading.Tasks.Task.Execute() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Google.Apis.Auth.OAuth2.TokenRefreshManager.<GetAccessTokenForRequestAsync>d__10.MoveNext() in C:Apiary2021-02-09.10-36-01SrcSupportGoogle.Apis.AuthOAuth2TokenRefreshManager.cs:line 114 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Google.Apis.Auth.OAuth2.UserCredential.<GetAccessTokenWithHeadersForRequestAsync>d__21.MoveNext() in C:Apiary2021-02-09.10-36-01SrcSupportGoogle.Apis.AuthOAuth2UserCredential.cs:line 135 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Google.Apis.Auth.OAuth2.UserCredential.<InterceptAsync>d__17.MoveNext() in C:Apiary2021-02-09.10-36-01SrcSupportGoogle.Apis.AuthOAuth2UserCredential.cs:line 92 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Google.Apis.Http.ConfigurableMessageHandler.<CredentialInterceptAsync>d__71.MoveNext() in C:Apiary2021-02-09.10-36-01SrcSupportGoogle.Apis.CoreHttpConfigurableMessageHandler.cs:line 651 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) at Google.Apis.Http.ConfigurableMessageHandler.<SendAsync>d__69.MoveNext() in C:Apiary2021-02-09.10-36-01SrcSupportGoogle.Apis.CoreHttpConfigurableMessageHandler.cs:line 447 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Google.Apis.Upload.ResumableUpload
1.d__25.MoveNext() в C:Apiary2021-02-09.10-36-01SrcSupportGoogle.ApiUploadResumableUpload.cs:строка 1123 — Конец трассировки стека из предыдущего местоположения, где было выдано исключение — в System.Runtime.Услуги компиляторов.Дежурный.ThrowForNonSuccess(Задача задачи) в System.Runtime.Услуги компиляторов.Дежурный.HandleNonSuccessAndDebuggerNotification(Задание задачи) в Google.Api.Upload.Возобновляемая загрузка.d__67.MoveNext() в C:Apiary2021-02-09.10-36-01SrcSupportGoogle.ApiЗагрузкаВозобновляемая загрузка.cs:строка 411 Нажмите любую клавишу, чтобы продолжить…
Пожалуйста, предоставьте любые решения или предложения. Заранее спасибо..!
Комментарии:
1. Вы действительно добавили учетные данные в свое приложение или оставили их пустыми?
unauthorized_client
можно предположить, что вы либо не предоставляете учетные данные, либо предоставляете неверные учетные данные.