【问题标题】: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
            });
        }
    };
    

    【讨论】:

      猜你喜欢
      • 2021-12-29
      • 2012-05-27
      • 2018-11-06
      • 1970-01-01
      • 2015-06-12
      • 2018-12-22
      • 2018-11-19
      • 1970-01-01
      • 2016-04-15
      相关资源
      最近更新 更多