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

Python请求FatSecret API OAuth2.0访问令牌报invalid_client如何解决

问题原因

你遇到的invalid_client错误是FatSecret平台对客户端凭证校验不通过导致的,后续的KeyError属于次生错误,是请求令牌失败后响应内容不存在access_token字段引发的。

排查步骤

  • 核对填入的CLIENT_ID和CLIENT_SECRET,确认和FatSecret开发者后台生成的凭证完全一致,不要带多余空格、换行,注意大小写匹配,凭证填写错误是触发该错误的最常见原因。
  • 进入FatSecret应用的OAuth配置页,确认你的应用已经开启了Client Credentials授权类型,部分应用默认仅开启授权码模式,未开启客户端凭证模式会直接校验失败。
  • 移除代码中verify=False的配置,关闭SSL校验会触发FatSecret的安全拦截规则,反而导致请求失败。
  • 重置应用密钥后重试,排除旧密钥过期、被封禁的可能性。

修正后的代码

import requests
import json

token_url = "https://oauth.fatsecret.com/connect/token"
test_api_url = "https://platform.fatsecret.com/rest/server.api"

# 替换为自己的真实凭证
client_id = "<你的CLIENT_ID>"
client_secret = "<你的CLIENT_SECRET>"

data = {
    'grant_type': 'client_credentials',
    'scope': 'basic'
}

# 发送令牌请求,移除verify=False,手动指定Content-Type避免异常
access_token_response = requests.post(
    token_url,
    data=data,
    allow_redirects=False,
    auth=(client_id, client_secret),
    headers={"Content-Type": "application/x-www-form-urlencoded"}
)

# 先判断请求状态再解析响应,避免KeyError
if access_token_response.status_code == 200:
    tokens = access_token_response.json()
    access_token = tokens['access_token']
    print(f"access token: {access_token}")
    # 发起业务请求,测试时先指定明确的接口方法避免参数错误
    api_call_headers = {'Authorization': f'Bearer {access_token}'}
    api_call_response = requests.get(
        test_api_url,
        headers=api_call_headers,
        params={"method": "food.get", "food_id": "4384", "format": "json"}
    )
    print(api_call_response.text)
else:
    print(f"请求令牌失败,状态码:{access_token_response.status_code},响应内容:{access_token_response.text}")

补充说明

你代码中的scope参数配置是正确的,不需要调整,FatSecret客户端凭证模式默认的授权范围就是basic。如果调整后还是返回invalid_request,可以检查是否有多余的请求参数,或者参数格式不符合要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:36:03