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