8

У меня есть веб-приложение C# .net, которое я использую для загрузки видео на Youtube. Это работало около 6 месяцев назад, но теперь оно перестало работать. Следующий код просто зависает, когда я запускаю мой сайт на локальном компьютере с помощью Visual Studio:GoogleWebAuthorizationBroker.AuthorizeAsync freezes

 UserCredential credential; 
    using (var auth_stream = new FileStream(Server.MapPath("~/YouTube/client_secrets.json"), FileMode.Open, FileAccess.Read)) 
    { 
     credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
      GoogleClientSecrets.Load(auth_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 
     ); 
    } 

Я также попытался следующие после просмотра других сообщений на переполнение стека:

 UserCredential credentialS; 
    using (var auth_stream = new FileStream(Server.MapPath("~/YouTube/client_secrets.json"), FileMode.Open, FileAccess.Read)) 
    { 
     credentialS = await GoogleWebAuthorizationBroker.AuthorizeAsync(
      new ClientSecrets 
      { 
       ClientId = "blahblah-myDetailsBlahBLah.apps.googleusercontent.com", 
       ClientSecret = "myClientSecret", 
      }, 
      // 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 
     ); 
    } 

Я также notived что я использовал версию 1.7.0-бета API Google, поэтому я обновил ее с помощью консоли PackageManager до версии 1.8.2.

Я также создал новый клиентский секрет с помощью консоли разработчика Google и использовал его на своем веб-сайте.

Но после попытки этих действий звонок по умолчанию GoogleWebAuthorizationBroker.AuthorizeAsync все еще висит. Я замечаю, что мой веб-сайт в моем локальном браузере освежает, как будто его попытка подключения, но вызов никогда не является секретным.

Как я могу решить это?

+0

открытая проверка% папка appData% для папки с именем, которая имеет что-то вроде YouTube в ней, удалите ее, попробуйте еще раз. или просто измените «пользователь» на «user2» и повторите попытку – DaImTo

+0

Была пустая папка Roaming \ Google.Apis.Auth, поэтому я удалил ее, и я также изменил пользователя на user2, но у меня все еще есть та же проблема –

+0

У вас есть брандмауэр блокирование сервера аутентификации? – DaImTo

ответ

1

Я также столкнулся с этой проблемой, используя API календаря Google.

Мое приложение позволяет извлекать уведомления из различных онлайн-ресурсов и отправлять их в общий календарь Google.

Он отлично работает в среде разработки, но не тогда, когда я развернул его на виртуальную машину, где он запускается в качестве запланированной задачи Windows каждые 15 минут, используя учетную запись службы в этой виртуальной машине.

Я помню, что при первой настройке мне пришлось пройти шаг авторизации в браузере, но он не запускался при запуске в качестве запланированной задачи.

Я не смог найти способ заставить его запрашивать через браузер, чтобы предоставить доступ снова.

Поскольку учетная запись службы C: \ Users \\ Documents.credentials \ calendar-dotnet-quickstart была создана просто отлично, я просто скопировал пользователя Google.Apis.Auth.OAuth2.Responses.TokenResponse из того же папку в моей среде разработки, и теперь она отлично работает.

Это не может быть лучшим или окончательным решением для этого, но оно работает.

Я подозреваю, что я вошел в систему как пользователь этого сервиса для запланированной задачи и выбежал из командной строки, чтобы получить запрос через браузер, чтобы предоставить разрешение.

Надеюсь, это поможет кому-то.

 Смежные вопросы

  • Нет связанных вопросов^_^