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

如何让Python脚本自动获取Dropbox API的访问令牌?

解决Dropbox令牌过期实现无人值守Python应用方案

一、获取长期有效的Refresh Token

这一步仅需手动操作一次,之后就能实现自动刷新令牌:

    1. 登录Dropbox开发者控制台,打开你的应用
    1. 在应用「Settings」页面的「OAuth 2」区域,确认Access type选择「Full Dropbox」或「App folder」(按需选择)
    1. 构造授权URL,必须带上access_type=offline参数,示例格式:
    https://www.dropbox.com/oauth2/authorize?client_id=你的应用CLIENT_ID&response_type=code&access_type=offline
    
    1. 在浏览器打开该URL,登录Dropbox账号并授权,获取授权码(authorization code)
    1. 用授权码兑换refresh token和初始access token,执行以下Python代码:
    import requests
    import json
    
    token_url = "https://api.dropboxapi.com/oauth2/token"
    data = {
        "grant_type": "authorization_code",
        "code": "你拿到的授权码",
        "client_id": "你的应用CLIENT_ID",
        "client_secret": "你的应用CLIENT_SECRET"
    }
    response = requests.post(token_url, data=data)
    tokens = response.json()
    # 将refresh token保存到本地文件,后续自动刷新用
    with open("dropbox_tokens.json", "w") as f:
        json.dump({"refresh_token": tokens["refresh_token"]}, f)
    
    得到的refresh token长期有效,除非你手动撤销应用权限。

二、编写自动刷新令牌的Python业务代码

Dropbox官方SDK内置了自动刷新逻辑,无需手动处理令牌过期:

    1. 安装SDK:pip install dropbox
    1. 核心代码示例:
    import dropbox
    import json
    import time
    
    # 加载保存的refresh token
    with open("dropbox_tokens.json", "r") as f:
        tokens = json.load(f)
    refresh_token = tokens["refresh_token"]
    client_id = "你的应用CLIENT_ID"
    client_secret = "你的应用CLIENT_SECRET"
    
    # 初始化客户端,SDK会自动处理令牌刷新
    dbx = dropbox.Dropbox(
        oauth2_refresh_token=refresh_token,
        app_key=client_id,
        app_secret=client_secret
    )
    
    def update_dropbox_file(local_file_path, dropbox_file_path):
        with open(local_file_path, "rb") as f:
            dbx.files_upload(f.read(), dropbox_file_path, mode=dropbox.files.WriteMode.overwrite)
    
    # 24小时循环执行,每分钟覆盖一次文件
    while True:
        update_dropbox_file("你的本地文件路径", "/Dropbox目标文件路径")
        time.sleep(60)
    

三、服务器部署保障后台运行

  • 确保dropbox_tokens.json和代码文件权限安全(仅当前用户可读)
  • 使用进程管理工具让脚本后台持续运行:
    • 用nohup快速启动:nohup python3 your_script.py &
    • 用systemd实现开机自启+崩溃重启:
      创建服务文件/etc/systemd/system/dropbox-updater.service:
      [Unit]
      Description=Dropbox File Updater
      After=network.target
      
      [Service]
      User=你的服务器用户名
      ExecStart=/usr/bin/python3 /脚本所在路径/your_script.py
      Restart=always
      
      [Install]
      WantedBy=multi-user.target
      
      执行命令生效:
      sudo systemctl daemon-reload
      sudo systemctl start dropbox-updater
      sudo systemctl enable dropbox-updater
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 06:20:47