java - 交换授权码只能使用一次 - Oauth 2.0

标签 java oauth-2.0 google-api-java-client

我正在尝试实现此代码。 https://developers.google.com/drive/web/credentials#retrieve_oauth_20_credentials

我有网络应用程序的客户端 ID 和 client_secrets json,因为我正在从电子表格中提取一些值,一切正常,并且我的应用程序中已经有电子表格的数据。但我的问题是如何多次重复使用该授权代码?因为我必须从该电子表格中提取更多数据,所以我的 URL 是 http://localhost:8080/cluster/?state=/profile&code=xxxxxxx但例如,当我尝试刷新该页面时,会出现此错误。

发生错误:com.google.api.client.auth.oauth2.TokenResponseException:400 错误请求 { “错误”:“无效的授权”, "error_description": "代码已兑换。" }

我有相同的 url 实现,但唯一的区别是我更改了此方法 storeCredentials(userId, credentials) - getStoredCredentials(userId) 并将该值放入数据库表中。

那么,如何实现“兑换授权码”呢?以及如何将我的应用程序链接到新网址?

感谢您的帮助! :D

最佳答案

首先,按照协议(protocol),授权码必须使用一次,因此身份验证服务器必须在第一次使用后使其失效。

如果您想将其用于实现的其他部分,您可以保存它,使用它并向使用 getStoredCredentials 方法的其他页面发送 302 重定向

关于java - 交换授权码只能使用一次 - Oauth 2.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28985008/

相关文章:

java - 将私钥导入Java时出错

java - 注释错误: JVM: Attempt to retrieve Java agent attachments failed

c# - IdentityServer4 错误,此客户端不允许离线访问

ruby-on-rails - Rails 2.3.5 中用于 oAuth2 消费者和提供者功能的 Gem

oauth-2.0 - 缺少必需的参数 : client_id

java - 如何在Java客户端使用通过serviceAccounts.keys.create API生成的Google云平台服务帐户 key ?

java - 请帮我理解这段Java代码

java - 测试 spring hibernate dao 和服务层

java - "Requested entity was not found."- Apps 脚本执行 API 错误

java - 通过Google分析报告API获取clientId