如何在没有Box的授权页面的情况下获取访问令牌

xia*_*lin 7 box-api

我被授予了文件夹中的访问权限(协作).我需要的是每天访问该文件夹并从中获取文件.现在,我生成的开发人员令牌在1小时后到期.有没有一种方法可以让我authorization code没有第一条腿,这需要一个用户界面.这样,每当我获取文件时,我都可以刷新访问权限.

Ski*_* Ta 10

您应该能够刷新令牌而无需获取授权码.发送访问令牌时,还会向您发出刷新令牌.

{
    "access_token": "T9cE5asGnuyYCCqIZFoWjFHvNbvVqHjl",
    "expires_in": 3600,
    "restricted_to": [],
    "token_type": "bearer",
    "refresh_token": "J7rxTiWOHMoSC1isKZKBZWizoRXjkQzig5C6jFgCVJ9bUnsUfGMinKBDLZWP9BgR"
}
Run Code Online (Sandbox Code Playgroud)

您应该将此刷新令牌存储在安全的地方(钥匙串,加密的数据存储,类似的东西),并在会话到期时使用它来刷新会话.

当您从Box收到任何API请求的401 Unauthorized响应时,您可以告知会话已过期,并且您会看到值为Bearer realm =的WWW-Authenticate标头.

流程应该类似于:

1)登录Box并获取授权码

2)交换ACCESS TOKEN和REFRESH TOKEN对的授权码(这只需要做一次!)

3)存储刷新令牌

4)开始使用API​​发出请求

5)当在API响应中收到带有WWW-Authenticate标头的401 Unauthorized时,向Box发出一个www-form-urlencoded POST请求,如下所示:

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
Run Code Online (Sandbox Code Playgroud)

如果成功,您将获得一个新的访问令牌和刷新令牌对.存储新的刷新令牌,换出旧的访问令牌,然后从之前的失败调用中恢复API调用.

希望有所帮助!