Node.js 如何在不使用Google API nodejs客户端的情况下处理过期的Google API访问令牌?

Node.js 如何在不使用Google API nodejs客户端的情况下处理过期的Google API访问令牌?,node.js,google-api,google-api-nodejs-client,Node.js,Google Api,Google Api Nodejs Client,我已经实现了获取访问令牌、刷新令牌和过期日期的代码。 所有这些值都已存储在数据库中 现在,我需要一种方法来获取另一个访问令牌,以防旧令牌在不使用google api nodejs客户端包的情况下过期 原因是这个模块最近有bug,你可以在这里查看(我的评论是最新的) 当时,我试过这样的方法 GoogleTokens.findOne({isObsolete: false}).then((token) => { let subscriptionsGetUrl =

我已经实现了获取访问令牌、刷新令牌和过期日期的代码。 所有这些值都已存储在数据库中

现在,我需要一种方法来获取另一个访问令牌,以防旧令牌在不使用google api nodejs客户端包的情况下过期

原因是这个模块最近有bug,你可以在这里查看(我的评论是最新的)

当时,我试过这样的方法

GoogleTokens.findOne({isObsolete: false}).then((token) => {
                let subscriptionsGetUrl = "https://www.googleapis.com/androidpublisher/v2/applications/" + req.query.packageName + "/purchases/subscriptions/" + req.query.subscriptionId + "/tokens/" + req.query.token + "?access_token=" + token.accessToken;

                request(subscriptionsGetUrl, function (error, response, body) {
                    if (error) {
                        throw error;
                    }

                    res.success(JSON.parse(body).expiryTimeMillis);
                });
            });
但当访问令牌过期时,它将失败


谢谢。

这个答案怎么样?您可以使用OAuth2API检索访问令牌的过期时间。当您想要在没有GoogleAPI nodejs客户端的情况下检索它时,可以使用以下方法

示例脚本: 答复: 如果还可以使用访问令牌,则返回以下响应。 如果访问令牌已经无法使用,则返回以下响应。 参考: 我从以下文件中获得了上述方法


如果这对你没用,我很抱歉。

这个答案怎么样?您可以使用OAuth2API检索访问令牌的过期时间。当您想要在没有GoogleAPI nodejs客户端的情况下检索它时,可以使用以下方法

示例脚本: 答复: 如果还可以使用访问令牌,则返回以下响应。 如果访问令牌已经无法使用,则返回以下响应。 参考: 我从以下文件中获得了上述方法


如果这对您没有帮助,我很抱歉。

您需要使用非google api nodejs客户端检索新的访问令牌。如果您有一个刷新令牌,您可以通过POST请求使用刷新令牌检索新的访问令牌。你需要这样的方法。我的理解正确吗?@Tanaike:嗨,我的意思是我需要检测访问令牌何时过期,那时我可以使用刷新令牌请求一个新的。问题是,在官方文件中,我找不到如何检测访问令牌是否过期的方法。谢谢您的回复。我贴出了答案。请确认。您需要使用非google api nodejs客户端检索新的访问令牌。如果您有一个刷新令牌,您可以通过POST请求使用刷新令牌检索新的访问令牌。你需要这样的方法。我的理解正确吗?@Tanaike:嗨,我的意思是我需要检测访问令牌何时过期,那时我可以使用刷新令牌请求一个新的。问题是,在官方文件中,我找不到如何检测访问令牌是否过期的方法。谢谢您的回复。我贴出了答案。请确认一下,谢谢塔奈克。在对此进行了一些研究之后,我采用了这种方式:每当出现401 Unauthorized时,我捕获它,并在捕获中使用refresh_令牌请求新的access_令牌,然后使用access再次调用API_token@HoangTrinh谢谢您提供的附加信息。@Tanaike刷新
idToken
怎么样?请查看详细信息谢谢塔奈克。在对此进行了一些研究之后,我采用了这种方式:每当出现401 Unauthorized时,我捕获它,并在捕获中使用refresh_令牌请求新的access_令牌,然后使用access再次调用API_token@HoangTrinh谢谢您提供的附加信息。@Tanaike刷新
idToken
怎么样?请看详情
var uri = "https://www.googleapis.com/oauth2/v3/tokeninfo?access_token=" + accesstoken;
request.get({uri: uri}, (err, res, body) => {
    console.log(body)
});
{
    "azp": "#####",
    "aud": "#####",
    "sub": "#####",
    "scope": "#####",
    "exp": "1234567890", // Expiration time
    "expires_in": "3600", // Remaining time
    "access_type": "offline"
}
{
 "error_description": "Invalid Value"
}