Youtube-v3-api “не удалось запустить браузер с помощью ”https://accounts.google.com/o/oauth2/v2/auth-что?
Привет, я работаю над веб-приложением, которое загружает видео на канал Youtube пользователей. Я использовал код, который приведен в руководстве google Youtube API Guide.
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() { UserCredential credential; using (var stream = new FileStream("client_secrets.json", FileMode.Open, FileAccess.Read)) { credential = await GoogleWebAuthorizationBroker.AuthorizeAsync( GoogleClientSecrets.Load(stream).Secrets, // This OAuth 2.0 access scope allows an application to upload files to the // authenticated user's YouTube channel, but doesn't allow other types of access. new[] { YouTubeService.Scope.YoutubeUpload }, "user", CancellationToken.None ); } var youtubeService = new YouTubeService(new BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = Assembly.GetExecutingAssembly().GetName().Name }); 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 = "22"; // See https://developers.google.com/youtube/v3/docs/videoCategories/list video.Status = new VideoStatus(); video.Status.PrivacyStatus = "unlisted"; // or "private" or "public" var filePath = @"REPLACE_ME.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/*"); await videosInsertRequest.UploadAsync(); } }
Что я уже пробовал:
Этот код отлично работает, когда я запускаю его в visual studio локально, и видео загружается на мой канал Youtube. Но проблема с которой я сталкиваюсь заключается в том что когда я размещаю приложение в IIS на серверной машине оно выдает исключение отказано в доступе к папке
'C:\Windows\system32\config\systemprofile'
Я дал разрешение на папку и теперь она выдала другое исключение
"Не удалось запустить браузер с помощью "https://accounts.google.com/o/oauth2/v2/auth-что?access_type=offline&response_type=code&client_id=MY_CLIENT_ID&redirect_uri=http%3A%2F%2Flocalhost%3A62196%2Fauthorize%2F&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutube.загрузить" для авторизации. Подробнее см. Внутреннее исключение."
Patrice T
Мы не являемся поддержкой Google/YouTube.
Rokesh Kumar
Я просто хотел знать, сталкивался ли кто-то еще с этой проблемой
F-ES Sitecore
Этот;
Хранилище FileStream("для выполнения действий, описанных.в JSON"...
вероятно, он делает не то, что вы думаете, если этот код размещен в IIS. В какой папке он будет искать ваш файл json?
Rokesh Kumar
Файл Json находится внутри папки приложения, и у него есть разрешение на доступ к нему, проблема в том, что он хочет, чтобы браузер открывался с URI перенаправления, но этого не происходит.
F-ES Sitecore
"Папка приложения"? Что такое "папка приложения" для сайта, работающего под управлением IIS? Помните, что ваш код в IIS выполняется внутри хост-приложения (IIS), и когда запрашивается файл, это делает хост, а не ваш сайт.
Кроме того, если этот код буквально открывает браузер, то он не будет работать и внутри веб-сайта, поскольку ваш код (опять же) работает внутри хост-службы, и эта служба не имеет доступа к рабочему столу.
Просто потому, что ваш код работает в консоли, не означает, что вы можете поместить этот код на веб-сайт, и он все равно будет работать.
Rokesh Kumar
Мои извинения, позвольте мне объяснить, как это работает. В первый раз, когда пользователь загружает видео на YouTube, он открывает браузер для авторизации и в конечном итоге загружает видео. Это одноразовое разрешение. Со второго раза он не открывает браузер, а загружает видео. Теперь проблема в том, что, как я уже объяснял ранее, это, кажется, работает нормально, когда я запускаю это в Visual studio(ASP.NET) но при размещении в IIS он выдает ошибку "браузер не открывается".
F-ES Sitecore
Вы не можете создать браузер из процесса IIS, у него нет доступа к рабочему столу. Он работал только локально, поскольку клиент и сервер были одной и той же машиной, а ваш код выполнялся из вашей учетной записи пользователя, которая имела доступ к рабочему столу.