Googlewebauthorizationbroker.AuthorizeAsync в IIS. Net RunTime Ошибка - PullRequest
0 голосов
/ 17 января 2019

Я использую Googlewebauthorizationbroker.AuthorizeAsync() для получения токена. Я использую «процесс» на веб-сайте и звоню в ConsloeApp, чтобы получить данные Google Calender. Он на Visual Studio (2017) работает отлично, но когда я вставляю IIS, он не открывает браузер для авторизации, а IIS получает .Net RunTime ERROR.

Это мой код. Надежда может найти решение этой проблемы.

Public Sub  Main(args As String())

    Dim userID As String = "xxx"
    Dim Credential As UserCredential

    Dim Stream As New FileStream("~\credentials.json", FileMode.Open, FileAccess.ReadWrite)

    Dim credPath As String = "~\token.json"
    Credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
        GoogleClientSecrets.Load(Stream).Secrets,
        Scopes,
        userID,
        CancellationToken.None,
        New FileDataStore(credPath, True)).Result

    Dim oService As CalendarService = New CalendarService(New BaseClientService.Initializer() With
    {
            .HttpClientInitializer = Credential,
            .ApplicationName = ApplicationName
    })

    Fun_List(oService)

    Console.ReadLine()
End Sub

И это сообщение об ошибке. введите описание изображения здесь

Моему вопросу может понравиться этот вопрос.

GoogleWebAuthorizationBroker не открывает браузер при работе на IIS

Google Auth работает в Visual Studio, но зависает при развертывании в IIS

1 Ответ

0 голосов
/ 17 января 2019

Метод GoogleWebAuthorizationBroker.AuthorizeAsync используется для установленных приложений. Откроется окно браузера на компьютере, на котором выполняется код. В случае, когда вы запускаете его в Visual Studio, он работает нормально, но как только вы попытаетесь разместить его, он попытается открыть окно браузера на веб-сервере, которое не будет работать.

Вам необходимо использовать GoogleAuthorizationCodeFlow, который был разработан для использования с веб-приложениями. Вы можете найти пример здесь к сожалению, его C # я не знаю ни одного примера VB для клиентской библиотеки google .net.

private static readonly IAuthorizationCodeFlow flow =
        new GoogleAuthorizationCodeFlow(new GoogleAuthorizationCodeFlow.Initializer
            {
                ClientSecrets = new ClientSecrets
                {
                    ClientId = "PUT_CLIENT_ID_HERE",
                    ClientSecret = "PUT_CLIENT_SECRET_HERE"
                },
                Scopes = new[] { DriveService.Scope.Drive },
                DataStore = new FileDataStore("Drive.Api.Auth.Store")
            });
...