gpt4 book ai didi

java - GoogleCredential token 刷新如何工作?

转载 作者:行者123 更新时间:2023-11-30 10:39:32 25 4
gpt4 key购买 nike

这是我通过构建器自定义的 Credential 和 Analytics 对象:

GoogleCredential credential = new GoogleCredential
.Builder()
.setClientSecrets("ClientSecretId", "Secret")
.setTransport(HTTP_TRANSPORT)
.setJsonFactory(JSON_FACTORY)
.addRefreshListener(new CustomClientCredentialRefreshListener("SomeInfo", "AnotherInfo"))
.build()

.setAccessToken("accessToken")
.setRefreshToken("refreshToken")

.setExpiresInSeconds(3600L)
.setExpirationTimeMilliseconds(1472659276L); //future date in epoch time

Analytics analytics = new Analytics.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential)
.setApplicationName(APPLICATION_NAME)
.setHttpRequestInitializer(credential)
.build();

为什么访问 token 会在我调用任何 api 请求时刷新?例如,当我获得帐户时:

Accounts accounts = analytics.management().accounts().list().execute();

我有回应。没关系,没有任何问题。

但是访问 token 还没有过期。 long 变量在这里证明了这一点:setExpirationTimeMilliseconds()

但是它仍在刷新并成功地向我的刷新监听器返回了一个新的访问 token 。为什么?

setExpirationTimeMilliseconds() 有什么用?

我需要检查过期时间吗?那么我是否仅在 expired==true 的情况下才在凭据中设置刷新 token ?那么,在其他情况下,我只是设置访问 token 而不刷新?

最佳答案

解决了!问题出在 Credendial 方法“getExpiresInSeconds()”中返回:

(expirationTimeMilliseconds - clock.currentTimeMillis()) / 1000;

我的 expirationTimeMilliseconds 是 1472659276L

currentTimeMillis 返回例如:1472734893827(比我的数字大 3 位数)

  public void intercept(HttpRequest request) throws IOException {
lock.lock();
try {
Long expiresIn = getExpiresInSeconds();
// check if token will expire in a minute
if (accessToken == null || expiresIn != null && expiresIn <= 60) {
refreshToken();
if (accessToken == null) {
// nothing we can do without an access token
return;
}
}
method.intercept(request, accessToken);
} finally {
lock.unlock();
}

Token每次都去刷新因为

if (accessToken == null || expiresIn != null && expiresIn <= 60)

每次都是真的

关于java - GoogleCredential token 刷新如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39256992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com