API 访问令牌到期时间很短
API Access Token expiration is very short
我是 API 的新手,我正在开始我的第一个 API 项目。我正在使用 Petfinder API v2 创建一个搜索可领养动物的网站。但是他们的 API 使用 OAuth,他们给你一个密钥和秘密。然后,您使用它们通过 CURL 之类的东西获取令牌。但此令牌将在 60 分钟后过期。之后,您需要请求一个新令牌。
有谁知道如何增加令牌的到期时间?或者有什么办法可以无限时间?或者有没有自动获取新令牌的代码?我正在使用 vanilla JavaScript 对此进行编程。
您无法延长访问令牌的到期时间。这是 Petfinders 受益的一项安全措施,因此他们没有一堆旧令牌。
您可以做的是更新您的代码以在您的令牌已过期时获取新令牌。香草 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
});
}
};
我是 API 的新手,我正在开始我的第一个 API 项目。我正在使用 Petfinder API v2 创建一个搜索可领养动物的网站。但是他们的 API 使用 OAuth,他们给你一个密钥和秘密。然后,您使用它们通过 CURL 之类的东西获取令牌。但此令牌将在 60 分钟后过期。之后,您需要请求一个新令牌。 有谁知道如何增加令牌的到期时间?或者有什么办法可以无限时间?或者有没有自动获取新令牌的代码?我正在使用 vanilla JavaScript 对此进行编程。
您无法延长访问令牌的到期时间。这是 Petfinders 受益的一项安全措施,因此他们没有一堆旧令牌。
您可以做的是更新您的代码以在您的令牌已过期时获取新令牌。香草 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
});
}
};