如何在java中使用刷新令牌获取访问令牌

问题描述 投票:0回答:1

我目前正在Contact Application使用Google Contact API实施Java

我已经完成了授权步骤并获得了访问令牌和刷新令牌。

现在我和我一起有CLIENT_ID , CLIENT_SECRET AND REFRESH_TOKEN

但是访问令牌在一小时内就会过期。

有人可以告诉您如何使用Java中的刷新令牌自动生成访问令牌。

java access-token refresh-token googlecontactsapi
1个回答
0
投票

我以两种方式实现了这种情况。不确定它们是否是最好的但对我来说效果很好。

在这两种情况下,您都必须存储刷新令牌以及用户的电子邮件ID。然后,您必须以下面的格式发出HTTP请求。

POST /oauth2/v4/token HTTP/1.1
Host: www.googleapis.com
Content-Type: application/x-www-form-urlencoded

client_id=**<your_client_id>**&
client_secret=**<your_client_secret>**&
refresh_token=**<refresh_token>**&
grant_type=refresh_token

它将返回access_token和expires_in Source

现在的问题是如何以及何时进行http请求。所以我有两种方法。

第1号

存储emailid,刷新令牌,访问令牌和当前时间+ 3600秒。在您的数据库中,您可以安排每5分钟检查一次到期时间,如果任何用户的当前时间到达(在5或10分钟之前)到期时间,请获取刷新令牌并更新该特定用户的值。在api调用期间,只需获取用户的访问令牌即可。

第二个

当用户登录您的站点时,获取访问令牌和当前时间+ 3600secs并将其存储在浏览器cookie中。现在在进行任何api调用之前,只需检查当前时间(api调用完成的时间)是否小于过期时间(存储在cookie中)。如果是真的那么你可以使用之前的访问令牌,否则获得一个新的访问令牌,然后再次更新cookie。此外,你必须提出另一个条件,如果根本不存在cookie,那么你还必须获得新的刷新令牌。

© www.soinside.com 2019 - 2024. All rights reserved.