我是新来的。如果有任何我没有遵循的规则,请原谅我,并随时让我知道。
我在使用 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