Googlewebauthorizationbroker.AuthorizeAsync IIS .Net 运行时错误

Googlewebauthorizationbroker.AuthorizeAsync on IIS .Net RunTime Error

我使用Googlewebauthorizationbroker.AuthorizeAsync()来获取令牌。我在网站上使用 "process" 并调用 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

这是错误信息。 enter image description here

我的问题可能喜欢这个问题

GoogleWebAuthorizationBroker won't open browser when running on IIS

方法GoogleWebAuthorizationBroker.AuthorizeAsync用于已安装的应用程序。它会在浏览器window 机器上运行 打开代码。在您 运行 的情况下,它在 Visual studio 中工作正常,但一旦您尝试托管它,它就会尝试在 Web 服务器上打开浏览器 window,但无法正常工作。

您需要使用专为与网络应用程序一起使用而设计的 GoogleAuthorizationCodeFlow。您可以找到一个示例 here 不幸的是它的 C# 我不知道 google .net 客户端库的任何 VB 示例。

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")
            });