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

使用Python Requests库调用MindBody API获取Token时提示‘Missing API key’错误的问题排查

问题分析与修复方案

嘿,我一眼就看出你Requests代码里的问题啦,主要是参数传递位置和请求体格式搞错了,和MindBody API的要求不匹配,才导致了"Missing API key"的错误。咱们一步步理清楚:

核心问题点

  • 请求头参数放错地方了:MindBody的这个usertoken/issue接口要求Api-Key和SiteId是放在**请求头(Headers)**里的,但你之前的Requests代码把它们和用户名密码一起塞到了params参数里——这个参数是用来拼接URL查询字符串的,API根本不会从这里读取Api-Key,自然就报缺失了。
  • 请求体格式错误:接口要求把Username和Password以JSON格式的请求体发送,而你用params=payload的方式,相当于把这些参数直接拼到了URL后面,完全不符合接口的接收要求。

修正后的Requests代码

按照API的要求调整参数位置和请求体格式后,代码就能正常工作了:

import requests
from django.http import HttpResponse

def get_staff_token(request):
    URL = "https://api.mindbodyonline.com/public/v6/usertoken/issue"
    # 把Api-Key和SiteId放到请求头中,这是接口要求的位置
    headers = {
        'Api-Key': API_KEY,
        'SiteId': "1111111",
        'Content-Type': "application/json"
    }
    # 用户名和密码作为JSON请求体的内容
    payload = {
        'Username': 'user@xyz.com',
        'Password': 'xxxxxxxx',
    }
    # 使用json参数自动序列化字典为JSON,并设置正确的请求头
    r = requests.post(url=URL, headers=headers, json=payload)
    print(r.text)
    return HttpResponse('Done')

补充说明

  • 使用requests.post的json参数时,Requests会自动帮你把字典序列化为JSON字符串,并且自动设置Content-Type: application/json请求头(当然手动在headers里指定也没问题,不会冲突)。
  • 这个修正后的逻辑和你用http.client写的代码完全一致:请求头传递Api-Key和SiteId,请求体传递JSON格式的用户名密码,所以就能成功获取Token啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 06:50:23