Google 日历 apis V3 - OAuth2.0 示例代码 VB.NET



我是新来的。如果有任何我没有遵循的规则,请原谅我,并随时让我知道。

我在使用 Google 日历 apis V3 时遇到了一些关于 OAuth2.0 身份验证的问题。

这是代码。

 Sub Main()
    Dim secret As New ClientSecrets
    secret.ClientId = "XXXXXXXXXX.apps.googleusercontent.com"
    secret.ClientSecret = "XXXXXXXXXXXXXX"
    Dim init As New Flows.AuthorizationCodeFlow.Initializer("https://accounts.google.com/o/oauth2/auth", "https://accounts.google.com/o/oauth2/token")
    init.ClientSecrets = secret
    Dim flow As New Flows.AuthorizationCodeFlow(init)
    Dim token As Responses.TokenResponse = flow.LoadTokenAsync("XXXXXX@gmail.com", CancellationToken.None).Result
    Dim credential As New UserCredential(flow, "XXXXXX@gmail.com", token)

    Try
        credential = GoogleWebAuthorizationBroker.AuthorizeAsync(secret, {CalendarService.Scope.Calendar}, "user", CancellationToken.None, ).Result
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try

它可以成功弹出谷歌登录界面

但是,它会显示有关"错误:redirect_uri_mismatch"的错误消息

奇怪的是,我已经设置了一个重定向 URL,它是

http://localhost:8080/

在谷歌开发者控制台中

但是错误msg的详细信息显示重定向URL不是我设置的URL并不断更改本地主机端口号。

我认为问题来自下面的行

Dim token As Responses.TokenResponse = flow.LoadTokenAsync("XXXXXX@gmail.com", CancellationToken.None).Result

是我错过了理解的东西还是我丢失了某些参数?

如果有人能帮忙,不胜感激。

Visual Studio喜欢随机更改端口号。 您可以将其设置为不这样做。 应该在project properties -> web -> project URL上的某个地方.

您可以转到 Google 开发人员控制台并创建一个Client ID for native application使用它来在本地主机上进行测试。

当您将其移动到您的网站时,不要将其发布到生产环境,将其更改回Client ID for web application

最新更新