Java 交换刷新令牌的一次性代码时Google OAuth重定向uri不匹配
我正在实现Google OAuth2服务器一次性代码流,如下所述: 客户端从google获得代码(在用户完成oauth流之后), 并将其发布到服务器 服务器尝试使用以下调用将代码交换为刷新令牌(使用Java SDK):Java 交换刷新令牌的一次性代码时Google OAuth重定向uri不匹配,java,scala,google-oauth,Java,Scala,Google Oauth,我正在实现Google OAuth2服务器一次性代码流,如下所述: 客户端从google获得代码(在用户完成oauth流之后), 并将其发布到服务器 服务器尝试使用以下调用将代码交换为刷新令牌(使用Java SDK): val authorizationScopes = Seq(GmailScopes.GMAIL_READONLY, GmailScopes.GMAIL_SEND, "email").asJavaCollection val googleAuthorizationCodeFlo
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错误请求{“错误”:“重定向uri不匹配”,“错误描述”:“错误请求”}
重定向URI与Google云控制台>凭据>客户端Id(Web应用程序)>授权重定向URI中的完全相同
另外,当我们使用OAuth重定向流时,它已经工作了,但是当我们切换到POST流时,它停止处理此消息
我尝试发送一个空的重定向URI(正如我在一些关于此事的回答中所看到的),但结果是:
com.google.api.client.auth.oauth2.TokenResponseException:400错误请求{“错误”:“缺少必需参数:重定向\u uri”,“错误\u描述”:“错误请求”}
我甚至尝试发送实际的“referer”url
这里我做错了什么?没有文档记录,但当您使用Google客户端SDK时,您不会重定向 SDK打开一个新窗口,并使用post消息与之通信
如果您将重定向uri设置为“postmessage”,它应该适合您。我已经花了几个小时寻找如何解决这个问题。您的解决方案是唯一有效的解决方案!谢谢