You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python BoxSDK认证时出现'refresh_token参数未找到'错误求助

解决Box SDK认证错误:No "refresh_token" parameter found

错误原因

刚创建的Box应用尚未完成首次授权,read_tokens()从keyring中读取不到有效的refresh_token,导致传给Box API的参数缺失,触发400错误。

解决步骤

1. 确认依赖安装

确保已安装所需依赖包:

pip install boxsdk keyring

2. 修改代码添加首次授权流程

原代码默认keyring中已有令牌,但新应用需先完成授权获取初始令牌。修改后的完整代码如下:

from boxsdk import OAuth2
from boxsdk import Client
import keyring

CLIENT_ID = '你的客户端ID'
CLIENT_SECRET = '你的客户端密钥'
EMAIL_ADDRESS = '管理员邮箱'


def read_tokens():
    """从keyring读取授权令牌"""
    auth_token = keyring.get_password('Box_Auth', EMAIL_ADDRESS)
    refresh_token = keyring.get_password('Box_Refresh', EMAIL_ADDRESS)
    return auth_token, refresh_token


def store_tokens(access_token, refresh_token):
    """Box SDK刷新令牌时的回调函数,用于存储令牌"""
    keyring.set_password('Box_Auth', EMAIL_ADDRESS, access_token)
    keyring.set_password('Box_Refresh', EMAIL_ADDRESS, refresh_token)


def main():
    # 从安全存储读取令牌
    access_token, refresh_token = read_tokens()

    # 首次授权:如果没有有效令牌,触发授权流程
    if not access_token or not refresh_token:
        oauth = OAuth2(
            client_id=CLIENT_ID,
            client_secret=CLIENT_SECRET,
            store_tokens=store_tokens,
        )
        # 生成授权URL,重定向URI需和Box应用设置一致
        auth_url, csrf_token = oauth.get_authorization_url('http://localhost:8080')
        print(f"请访问以下URL完成授权:{auth_url}")
        auth_code = input("粘贴授权后页面URL中的code参数:")
        # 用授权码获取初始令牌
        access_token, refresh_token = oauth.authenticate(auth_code)
        print("授权成功,令牌已保存到keyring")

    # 初始化OAuth2客户端
    oauth = OAuth2(
        client_id=CLIENT_ID,
        client_secret=CLIENT_SECRET,
        access_token=access_token,
        refresh_token=refresh_token,
        store_tokens=store_tokens,
    )

    # 创建Box客户端并验证
    client = Client(oauth)
    current_user = client.user(user_id='me').get()
    print('当前Box用户:', current_user.name)


if __name__ == "__main__":
    main()

3. 配置Box应用重定向URI

  1. 登录Box开发者控制台,找到你的应用
  2. 进入"Configuration"页面,找到"Redirect URIs"配置项
  3. 添加http://localhost:8080并保存设置

4. 运行代码完成首次授权

  1. 执行修改后的代码,控制台会输出授权URL
  2. 打开URL,用管理员账号登录并授权应用
  3. 授权成功后页面会跳转到http://localhost:8080,复制URL中code=后的字符串
  4. 将复制的code粘贴到控制台输入框,按回车
  5. 程序会自动将令牌保存到keyring,之后再次运行代码即可直接使用

内容的提问来源于stack exchange,提问作者Whitesnack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 16:50:34