gpt4 book ai didi

java - 将一次性代码交换为刷新 token 时出现 Google OAuth redirect_uri_mismatch

转载 作者:太空宇宙 更新时间:2023-11-04 09:47:36 25 4
gpt4 key购买 nike

我正在实现 Google OAuth2 服务器一次性代码流程,如下所述:

https://developers.google.com/identity/sign-in/web/server-side-flow

客户端从google获取代码(在用户完成oauth流程后),并将其 POST 到服务器。

服务器尝试使用此调用将代码交换为刷新 token (使用 Java SDK):

val authorizationScopes = Seq(GmailScopes.GMAIL_READONLY, GmailScopes.GMAIL_SEND, "email").asJavaCollection

val googleAuthorizationCodeFlow = new GoogleAuthorizationCodeFlow.Builder(
GoogleNetHttpTransport.newTrustedTransport(),
JacksonFactory.getDefaultInstance,
googleAppInfo.googleClientId,
googleAppInfo.googleClientSecret,
authorizationScopes)
.setTokenServerUrl(new GenericUrl(googleAppInfo.tokenServerUrl))
.setAccessType("offline")
.build()

val googleTokenResponse: GoogleTokenResponse = googleAuthorizationCodeFlow
.newTokenRequest(code)
.setRedirectUri(redirectUri)
.execute()

我得到:

com.google.api.client.auth.oauth2.TokenResponseException: 400 Bad Request { "error" : "redirect_uri_mismatch", "error_description" : "Bad Request"}

redirectUri 与 Google 云控制台 > 凭据 > 客户端 ID(Web 应用程序)> 授权重定向 URI 中的完全相同。

此外,当我们使用 OAuth 重定向流程时它已经可以工作,但是当我们切换到 POST 流程时,它就停止处理此消息。

我尝试发送一个空的redirectUri(正如我在有关此事的一些答案中看到的那样),但我得到:

com.google.api.client.auth.oauth2.TokenResponseException: 400 Bad Request { "error" : "Missing required parameter: redirect_uri", "error_description" : "Bad Request"}

我什至尝试发送实际的“referer”网址。

我在这里做错了什么?

最佳答案

这没有记录,但当您使用 Google 客户端 SDK 时,您不会重定向。

SDK 打开一个新窗口并使用 post 消息与其通信。

如果您将重定向 uri 设置为“postmessage”,它应该适合您。

关于java - 将一次性代码交换为刷新 token 时出现 Google OAuth redirect_uri_mismatch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55222501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com