Google 日历身份验证使用客户端 ID 和 ClientSecret 拒绝访问

问题描述 投票:0回答:1

我的场景很简单:我有一个可以访问我的 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
google-calendar-api google-api-dotnet-client
1个回答
0
投票

GoogleWebAuthorizationBroker.AuthorizeAsync 专为已安装的应用程序而设计,它会在运行代码的计算机上打开同意屏幕,您可以在网络服务器上使用它。

© www.soinside.com 2019 - 2024. All rights reserved.