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

如何从API获取Token并传递至另一API?解决调用报错问题

问题分析与解决方案

错误原因

你遇到的TypeError: 'str' object is not callable是因为**requests.get的auth参数用法错误**:

  • auth参数仅用于HTTP基础认证,要求传入(用户名, 密码)格式的元组;
  • 你传入的字符串类型Token并不符合该参数的要求,因此触发报错。

Bearer Token的正确传递方式是将其放在请求头的Authorization字段中,格式为Bearer <你的Token>。

修正后的代码

import requests

# 1. 获取认证Token
url_auth = 'https://api.com/token'
payload_auth = {'grant_type': 'client'} 
username = "username"
password = "password"
  
response_auth = requests.post(url_auth, auth=(username, password), data=payload_auth)
response_auth.raise_for_status()  # 新增:校验认证请求是否成功,避免后续无Token报错
data = response_auth.json()
access_token = data["access_token"]
print(access_token)

# 2. 调用第二个API
url_ref = 'https://api.com/api/operation/consult'
payload_ref = [
  {
    "operation": "1",
    "Reference": "DDD",
    "Status": "1"
  }
]

# 构造带Token的请求头
headers = {'Authorization': f'Bearer {access_token}'}

# 注意:GET请求不建议用请求体传数据,请确认API实际要求的请求方法
# 如果是POST请求(更符合传JSON体的场景)
response_ref = requests.post(url_ref, headers=headers, json=payload_ref)
# 如果确实是GET请求,需将数据转为URL参数(极少有API这么设计)
# response_ref = requests.get(url_ref, headers=headers, params={'payload': json.dumps(payload_ref)})

# 校验请求结果
response_ref.raise_for_status()
print(response_ref.json())

额外注意事项

  • 请求方法校验:原代码用requests.get却传递data参数不符合HTTP规范(GET请求通常通过URL参数传数据),请确认第二个API的实际请求方法,对应调整代码。
  • 自动JSON处理:使用requests.post的json参数时,会自动设置Content-Type: application/json请求头,无需手动序列化JSON。
  • 异常排查:response.raise_for_status()会在请求返回4xx/5xx状态码时直接抛出异常,便于快速定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 13:03:11