0

我正在寻找使用刷新令牌生成 BOX 访问令牌。

我想在刷新令牌到期之前定期执行此操作。

如何在不登录 Web 应用程序的情况下实现自动化。

从网站上,我可以生成令牌。但我正在寻求自动化工作以定期创建令牌以避免令牌过期。有任何想法吗?

4

2 回答 2

0

创建一个数据库,在其中存储访问令牌、刷新令牌和访问令牌的生成日期。

在您的应用程序中工作时,如果您的访问令牌已过期,请检查数据库中的日期。如果过期,则创建一个函数来生成具有刷新令牌的访问令牌。这是使用 cUrl 生成访问令牌的 V2 方式:

curl https://www.box.com/api/oauth2/token \
-d 'grant_type=refresh_token&refresh_token={valid refresh token}&client_id={your_client_id}&client_secret={your_client_secret}' \
-X POST

这将返回一个像这样的 json 答案:

{
    "access_token": "T9cE5asGnuyYCCqIZFoWjFHvNbvVqHjl",
    "expires_in": 3600,
    "restricted_to": [],
    "token_type": "bearer",
    "refresh_token": "J7rxTiWOHMoSC1isKZKBZWizoRXjkQzig5C6jFgCVJ9bUnsUfGMinKBDLZWP9BgR"
}

这是原始教程的链接:http: //developers.box.com/oauth/

这是使用 cUrl 和 PHP 获取新访问/刷新令牌的示例:

function getAccessTokenByRefresh($refreshToken, $client_id, $client_secret){
    $defaultOptions = array(
            CURLOPT_SSL_VERIFYPEER => false,
            CURLOPT_VERBOSE        => true,
            CURLOPT_HEADER         => false,
            CURLINFO_HEADER_OUT    => false,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_FOLLOWLOCATION => false,
    );

    $ch = curl_init('https://www.box.com/api/oauth2/token');
    $options = $defaultOptions;
    $options[CURLOPT_POST] = true;
    $options[CURLOPT_POSTFIELDS] = array(
            'grant_type'=>'refresh_token',
            'refresh_token'=>$refreshToken,
            'client_id'=>$client_id,
            'client_secret'=>$client_secret
    );
    curl_setopt_array($ch, $options);
    $response = curl_exec($ch);
    curl_close($ch);
    return json_decode($response, true);
}

生成新的访问令牌后,将它们保存在数据库中,并保存生成访问权的时间以供进一步比较。

于 2013-09-02T14:28:53.443 回答
0

您将进行一次身份验证以获得 access_token,但之后 crontab 将负责每 15 分钟刷新一次令牌。PHP 代码位于:

http://liljosh.com/upload-to-box-content-api-without-user-authentication/

于 2015-08-03T13:48:56.893 回答