我的场景很简单:我有一个可以访问我的 Google 日历的 Web 应用程序。当我使用 Visual Studio 从我的 PC 上运行此应用程序时,它运行良好,但当我在服务器上运行它时,它会出现错误。
我正在使用客户端 ID 和客户端密钥(如下面的代码所示)来验证我对日历的访问权限,正如我在我的 PC 上所说的那样,它有效。
我知道这是一个反复出现的话题,但我已经查看了数百篇有关此问题的帖子,但找不到任何可以表明我做错了什么的内容。
许多帖子的发布日期很旧,并且 API 版本中可能发生了一些变化。
我的 URI 已在 Google 控制台的授权 JavaScript 来源和授权重定向 URI 部分中注册
我看过几篇文章说在 PC 上运行和在服务器上运行之间存在差异,但是执行验证的脚本太简单(除了凭据之外它只有 2 行,请参见下面的代码)。
考虑到它在我的电脑上运行,有人(请)可以指导我应该检查哪些点以尝试识别错误......?
顺便说一句..错误是:访问被拒绝/无法使用“https://accounts.google.com/o/oauth2/v2/auth?access_type=offline.........”启动浏览器.. .
我已经被这个问题困扰了两个多星期,到目前为止还没有解决方案,我将非常感谢任何帮助。
我的代码...
Private Async Function GetCalendarService() As Tasks.Task(Of CalendarService)
Dim credPath As String = Server.MapPath("~\token.json")
Dim credential As UserCredential
credential = Await GoogleWebAuthorizationBroker.AuthorizeAsync(New ClientSecrets With {
.ClientId = "11111111111-hsgdhsgdhsgdhsgdhsgd208b2ta8a9dnba7ue.apps.googleusercontent.com",
.ClientSecret = "VVVVVV-NNNNN6YYYYYYYYhuPrkoSOcIsigkZZZ"
}, Scopes, "user", CancellationToken.None, New FileDataStore(credPath))
Return New CalendarService(New BaseClientService.Initializer() With {.HttpClientInitializer = credential})
End Function
GoogleWebAuthorizationBroker.AuthorizeAsync 专为已安装的应用程序而设计,它会在运行代码的计算机上打开同意屏幕,您可以在网络服务器上使用它。