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

第三方API Token每3天过期,如何实现永久有效?(附Python请求代码)

解决方案:自动管理Bearer Token,避免手动刷新

首先得明确核心逻辑:第三方API的Token过期机制是平台设定的,没法真的让Token“永久有效”,但可以通过自动刷新/重新生成Token来替代手动操作,实现无感知使用。

分两种场景处理

场景1:第三方API支持Refresh Token机制

这是最优方案,先去查API文档,看有没有获取Refresh Token的接口(一般首次获取Token时会同时返回Access Token和Refresh Token)。流程是:

  • 首次手动获取一对Access Token(3天过期)和Refresh Token(有效期更长)
  • 每次请求前检查Access Token是否即将过期,过期就用Refresh Token调用刷新接口,获取新的Access Token

示例代码

import requests
import json
from datetime import datetime, timedelta

# 配置项,根据你的实际情况修改
TOKEN_STORE = "local_token.json"
API_BASE = "你的第三方API基础地址"
INITIAL_REFRESH_TOKEN = "首次手动获取的Refresh Token"

def get_valid_token():
    """加载或刷新有效Token"""
    try:
        # 读取本地存储的Token信息
        with open(TOKEN_STORE, "r") as f:
            token_info = json.load(f)
        # 提前1小时刷新,避免刚好过期时请求失败
        expire_time = datetime.fromisoformat(token_info["expire_time"])
        if datetime.now() >= expire_time - timedelta(hours=1):
            return refresh_access_token()
        return token_info["access_token"]
    except (FileNotFoundError, KeyError):
        # 本地无存储或格式错误,直接刷新Token
        return refresh_access_token()

def refresh_access_token():
    """调用刷新接口获取新的Access Token"""
    refresh_url = f"{API_BASE}/refresh-token"  # 替换为API实际的刷新接口
    headers = {
        "Authorization": f"Bearer {INITIAL_REFRESH_TOKEN}"
        # 如果需要X-CSRFToken,这里也要加上对应的值
    }
    resp = requests.post(refresh_url, headers=headers)
    resp.raise_for_status()  # 请求失败时抛出异常,方便排查
    new_token_data = resp.json()
    # 计算并存储新Token的过期时间
    expire_time = datetime.now() + timedelta(seconds=new_token_data["expires_in"])
    with open(TOKEN_STORE, "w") as f:
        json.dump({
            "access_token": new_token_data["access_token"],
            "expire_time": expire_time.isoformat()
        }, f)
    return new_token_data["access_token"]

def call_api():
    """发起API请求,自动处理Token刷新"""
    valid_token = get_valid_token()
    headers = {
        'X-CSRFToken': 'token',  # 如果这个值也会过期,要同步处理刷新逻辑
        'Authorization': f'Bearer {valid_token}'
    }
    url = '你的API请求地址'
    resp = requests.get(url, headers=headers, timeout=20)
    resp.raise_for_status()
    return resp.json()

# 调用示例
if __name__ == "__main__":
    api_result = call_api()
    print(api_result)

场景2:第三方API不支持Refresh Token

如果平台没有刷新机制,只能定期自动调用Token生成接口来更新Token。比如每2天半自动跑一次生成逻辑,替换本地存储的Token。

示例代码

import requests
import json
from datetime import datetime, timedelta

# 配置项修改为你的实际信息
TOKEN_STORE = "local_token.json"
TOKEN_GENERATE_URL = "第三方API的Token生成接口地址"
GENERATE_PARAMS = {
    "username": "你的账号",
    "password": "你的密码"  # 或者其他生成Token需要的参数
}

def get_valid_token():
    """加载或重新生成有效Token"""
    try:
        with open(TOKEN_STORE, "r") as f:
            token_info = json.load(f)
        create_time = datetime.fromisoformat(token_info["create_time"])
        # 3天过期,提前12小时重新生成
        if datetime.now() >= create_time + timedelta(days=2, hours=12):
            return generate_new_token()
        return token_info["access_token"]
    except (FileNotFoundError, KeyError):
        return generate_new_token()

def generate_new_token():
    """调用生成接口获取新Token"""
    resp = requests.post(TOKEN_GENERATE_URL, data=GENERATE_PARAMS)
    resp.raise_for_status()
    new_token_data = resp.json()
    # 存储新Token和生成时间
    with open(TOKEN_STORE, "w") as f:
        json.dump({
            "access_token": new_token_data["access_token"],
            "create_time": datetime.now().isoformat()
        }, f)
    return new_token_data["access_token"]

# 后续API请求逻辑和场景1一致
def call_api():
    valid_token = get_valid_token()
    headers = {
        'X-CSRFToken': 'token',
        'Authorization': f'Bearer {valid_token}'
    }
    url = '你的API请求地址'
    resp = requests.get(url, headers=headers, timeout=20)
    resp.raise_for_status()
    return resp.json()

注意事项

  • 存储Token的本地文件要做好权限控制,别泄露敏感信息
  • 可以给刷新/生成Token的逻辑加重试机制,避免网络波动导致失败
  • 如果X-CSRFToken也会过期,要同步处理它的刷新逻辑
  • 严格按照第三方API的调用规则来,别触发平台的限流或封禁机制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 15:10:23