【问题标题】:API Access Token expiration is very shortAPI Access Token 过期时间很短
【发布时间】:2021-04-07 09:30:48
【问题描述】:
我对 API 很陌生,我正在开始我的第一个 API 项目。我正在使用 Petfinder API v2 创建一个搜索可收养动物的网站。但是他们的 API 使用 OAuth,并且他们给你一个密钥和秘密。然后,您可以使用它们来获取使用 CURL 之类的令牌。但是这个令牌会在 60 分钟后过期。之后,您需要请求一个新的令牌。
有谁知道如何增加令牌的到期时间?或者有没有办法拥有无限的时间?或者有没有自动获取新令牌的代码?我正在使用 vanilla JavaScript 进行编程。
这是他们的文档:https://www.petfinder.com/developers/v2/docs/
【问题讨论】:
标签:
javascript
json
api
oauth
access-token
【解决方案1】:
您无法延长访问令牌的到期时间。这是 Petfinders 利益的一项安全措施,因此他们不会有一堆旧令牌。
如果您的令牌已过期,您可以更新代码以获取新令牌。 vanilla javascript的原始灵感是here。
// Get OAuth token
const getOAuth = function() {
return fetch('https://api.petfinder.com/v2/oauth2/token', {
method: 'POST',
body: 'grant_type=client_credentials&client_id=' + key + '&client_secret=' + secret,
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}).then(function(resp) {
return resp.json();
}).then(function(data) {
// Store token data
token = data.access_token;
tokenType = data.token_type;
expires = new Date().getTime() + (data.expires_in * 1000);
});
};
// Make call if token expired
const makeCall = () => {
// If current token is invalid, get a new one
if (!expires || expires - new Date().getTime() < 1) {
getOAuth().then(function() {
// use access token
});
}
};