谷歌日历apis V3 - VB.NET中的OAuth2.0示例代码

时间:2014-12-12 09:27:31

标签: vb.net google-oauth

我是新来的。请原谅我,如果有任何规则我没有跟进,请随时告诉我。

使用Google Calendar 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”

的错误消息

我已经设置了一个

的重定向网址,这很奇怪
http://localhost:8080/

在Google Developers Console中

但是错误消息的详细信息显示重定向URL不是我设置的URL并且保持更改localhost端口号。

我认为问题来自下面一行

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

我错过了什么或者丢失了一些参数?

感谢是否有人可以帮助解决这个问题。

1 个答案:

答案 0 :(得分:0)

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

或者

您可以转到Google开发人员控制台并创建Client ID for native application,使用此功能在您的localhost上进行测试。

当您将其移至您的网站时,请不要将此版本发布到制作中,请将其更改回Client ID for web application