googleapis / googleapis/google-cloud-java
[google-auth-library-java] UserAuthorizer is discarding the id_token after successful authorization code exchange
- 主要语言
- Java
- 星标
- 2.1k
- 派生
- 1.2k
- 平均合并
- 1 天 23 小时
- 30 天内合并 PR
- 154
描述
I'm trying to get data from the `id_token` which is returned when exchanging an authorization code with the token endpoint.
I have everything I need to make the request to the endpoint manually. However, this is very verbose and feels like re-inventing the wheel. It got me thinking that there must be a way to get this data using the classes provided by the library.
Currently I am using the `com.google.auth.oauth2.UserAuthorizer` class to build up a request for the exchange of information.
```
val userCredentials: UserCredentials = UserAuthorizer.newBuilder()
.setClientId(googleOauthConfig.clientId)
.setTokenStore(tokenStore)
.setScopes(googleOauthConfig.scopes)
.setTokenServerUri(URI.create("https://oauth2.googleapis.com/token"))
.setCallbackUri(redirectUri)
.build()
.getCredentialsFromCode(authorizationCode, redirectUri)
```
The internals of `getCredentialsFromCode()` parses the response and it contains all the tokens. Including the `id_token` but, it gets discarded when constructing the `UserCredentials` object further down.
[![Debug mode showing that the value for id_token is stored][1]][1]
```
return UserCredentials.newBuilder()
.setClientId(clientId.getClientId())
.setClientSecret(clientId.getClientSecret())
.setRefreshToken(refreshToken)
.setAccessToken(accessToken)
.setHttpTransportFactory(transportFactory)
.setTokenServerUri(tokenServerUri)
.build(); // no mention of id_token
```
Regardless, I want to get this value so I can know basic information about the user such as their name, birthday and email address from a single request.
There does exist a method called `idTokenWithAudience()` which returns a Google ID Token from the refresh token response. If I call this, I get a token back that doesn't contain all the data that was available in the identically named `id_token` mentioned earlier making it a no-go either.
[1]: https://i.stack.imgur.com/zSMvN.png
贡献指南
评估
这个 Issue 还没有评估数据。