2016-03-07 5 views
0

Мы хотим использовать API Youtube v3 в сочетании с ASP.NET 4.5/C# для загрузки видео на определенный канал YouTube через консольное приложение. Компиляция выполняется в Visual Studio 2015 на компьютере с Windows 7 Professional Development.Youtube API v3 Ошибка аутентификации OAuth2 «соединение не удалось» на сервере Windows

Таким образом, мы создали учетные OAuth2 в консоли разработчика Google и использовать следующий код для рукопожатия авторизации oauth2

 using (var stream = new FileStream("client_secrets.json", FileMode.Open, FileAccess.Read)) 
     { 
      GoogleAuthorizationCodeFlow.Initializer initializer = new GoogleAuthorizationCodeFlow.Initializer 
      { 
       ClientSecrets = GoogleClientSecrets.Load(stream).Secrets, 
       DataStore = new FileDataStore(GoogleWebAuthorizationBroker.Folder) 
      }; 

      credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
       initializer, 

       new[] { YouTubeService.Scope.Youtube }, 
       user, 
       CancellationToken.None 
      ); 
     } 

Все отлично работает до сих пор. Если авторизации не было, откроются окна браузера (access_type = offline & response_type = code), где мы можем войти в нашу учетную запись Youtube, выбрать канал, предоставить необходимые права доступа, вернуться на страницу браузера localhost: portnumber/authorize? code = XYZ, где написано «Полученный код подтверждения. Вы можете закрыть эти окна», и наше консольное приложение продолжает работу. Это рабочий процесс на нашей машине разработки.

Однако при копировании приложения на Windows Server 2012 происходит ошибка. Также открывается окно браузера, и мы можем войти в систему и предоставить права доступа, но окончательная страница браузера localhost: portnumber/authorize? Code = XYZ не может загрузиться с ошибкой «connection connection».

Кажется, что никакой процесс не привязан к номеру порта (случайного?), Чтобы прочитать полученную информацию о кодах, получить токены и записать их в% AppData%/Google.Apis.Auth. Брандмауэр ничего не блокирует.

Наше первое предположение было вопросом разрешения имен. По умолчанию localhost был разрешен к :: 1 на сервере Windows. К сожалению, он все еще не работает, когда мы вынуждаем разрешение IPv4 до 127.0.0.1

Спасибо за каждое предложение.

ответ

0

Хорошо, я нашел решение.

Мы связали IIS8 с определенным IP-адресом, не включая 127.0.0.1.

После того, как мы добавили локальный IP-адрес через netsh http add iplisten, веб-сервер смог снова подключиться к локальному сокету для авторизации на основе однократного кода.