使用 Asana 的 NodeJS 模块 ( https://github.com/Asana/node-asana ) 和 OAuth,我应该如何处理 access_token 的过期?客户端是否提供了一些我应该用来检测这一点的机制?它是否提供了我应该使用 refresh_token 获取新 access_token 的东西?我无法在文档中找到有关 refresh_token 的任何讨论。
我已经注册了我的应用程序,并且能够使用 Client.app.accessTokenFromCode API 成功获取凭据。像这样的东西:
function handleOauthCallback(req, res) {
var client = Asana.Client.create({
clientId: CLIENT_ID,
clientSecret: CLIENT_SECRET,
redirectUri: computeRedirectUrl(req)
});
client.app.accessTokenFromCode(req.query.code).then(function(credentials) {
// store credentials
}
}
我正在存储从此调用返回的整个凭据对象,然后使用这些凭据创建客户端。像这样的东西:
var client = Asana.Client.create({
clientId: CLIENT_ID,
clientSecret: CLIENT_SECRET,
redirectUri: computeRedirectUrl(req)
});
var storedCredentials = getStoredCredentials();
client.useOauth({ credentials : storedCredentials });
现在我已经有了一个使用从 Asana 返回的凭据(包括 access_token 和 refresh_token)初始化的客户端,我应该如何处理 access_token 的到期?我是否需要自己检查它是否仍然有效并使用刷新令牌请求新令牌?还是客户会自动为我处理?如果客户端处理它,我如何知道它何时获得新的访问令牌?
更新
阅读代码,如果访问令牌不再有效,客户端似乎将尝试使用刷新令牌。但是我没有看到任何可以挂钩的通知来发现有一个新的访问令牌。是否有推荐的策略来处理这个问题?