Google API 异常 "invalid_grant" 在 DEVs GlassFish 中但在 Local 中没有
Google API Exception "invalid_grant" in DEVs GlassFish but not in Local
我正在使用 OAuth 2.0 对 Google 的 API 进行身份验证,并且在我本地的 GlassFish 中一切正常。
当我部署到 DEV 的 GlassFish 时,问题就开始了,这会引发以下异常:
com.google.api.client.auth.oauth2.TokenResponseException: 400 Bad Request { "error" : "invalid_grant" }
这是我的代码:
transport = GoogleNetHttpTransport.newTrustedTransport();
jsonFactory = JacksonFactory.getDefaultInstance();
credential = new GoogleCredential.Builder()
.setTransport(transport)
.setJsonFactory(jsonFactory)
.setServiceAccountUser(googleAdminEmail)
.setServiceAccountId(googleAdminAccount)
.setServiceAccountScopes(Arrays.asList(
DirectoryScopes.ADMIN_DIRECTORY_USER,
DirectoryScopes.ADMIN_DIRECTORY_GROUP,
DirectoryScopes.ADMIN_DIRECTORY_GROUP_MEMBER))
.setServiceAccountPrivateKeyFromP12File(new File(googleAdminKeyPath))
.build();
credential.refreshToken();
引发异常的确切行是:
credential.refreshToken();
如果我从我的本地 运行 获取访问令牌,假设令牌值为 "usghiudblk",并且我在 DEV 的 GlasshFish 上 运行 设置该值:credential.setAcessToken("usghiudblk");
它可以让我正常访问,但这仍然行不通:credential.refreshToken();
我真的搞不懂为什么在本地一切正常,但在 DEV 的 GlassFish 中却不行。
通过这个 post 的答案解决了它:
Invalid grant when accessing Google API
问题是服务器的时钟与 NTP 不同步。
就是这样...
我正在使用 OAuth 2.0 对 Google 的 API 进行身份验证,并且在我本地的 GlassFish 中一切正常。 当我部署到 DEV 的 GlassFish 时,问题就开始了,这会引发以下异常:
com.google.api.client.auth.oauth2.TokenResponseException: 400 Bad Request { "error" : "invalid_grant" }
这是我的代码:
transport = GoogleNetHttpTransport.newTrustedTransport();
jsonFactory = JacksonFactory.getDefaultInstance();
credential = new GoogleCredential.Builder()
.setTransport(transport)
.setJsonFactory(jsonFactory)
.setServiceAccountUser(googleAdminEmail)
.setServiceAccountId(googleAdminAccount)
.setServiceAccountScopes(Arrays.asList(
DirectoryScopes.ADMIN_DIRECTORY_USER,
DirectoryScopes.ADMIN_DIRECTORY_GROUP,
DirectoryScopes.ADMIN_DIRECTORY_GROUP_MEMBER))
.setServiceAccountPrivateKeyFromP12File(new File(googleAdminKeyPath))
.build();
credential.refreshToken();
引发异常的确切行是:
credential.refreshToken();
如果我从我的本地 运行 获取访问令牌,假设令牌值为 "usghiudblk",并且我在 DEV 的 GlasshFish 上 运行 设置该值:credential.setAcessToken("usghiudblk");
它可以让我正常访问,但这仍然行不通:credential.refreshToken();
我真的搞不懂为什么在本地一切正常,但在 DEV 的 GlassFish 中却不行。
通过这个 post 的答案解决了它:
Invalid grant when accessing Google API
问题是服务器的时钟与 NTP 不同步。
就是这样...