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

调用Google Keep API时遇HttpError 400:请求含无效参数

解决Google Keep API创建笔记时的HttpError 400问题

核心问题分析

你遇到的400错误,主要来自两个关键问题:请求体格式不符合API规范,以及错误的JSON编码方式。

1. 请求体结构错误

Google Keep API的列表项(listItems)中,text字段需要直接传入字符串,而非嵌套的{"text": "..."}对象。你的原始请求体里这个嵌套结构完全不符合API要求,这是触发“无效参数”错误的主要原因。

2. JSON双重编码导致转义问题

你提到请求体元素前出现三个反斜杠,这是因为你手动对JSON字符串进行了编码,但Google API客户端库本身会自动处理Python字典到JSON的序列化流程。重复编码会导致payload被错误转义,进一步加重参数无效问题。


解决方案

1. 修正请求体结构

调整listItems的text字段为直接字符串,正确的请求体结构如下:

note_body = {
    "title": "Testing Title",
    "body": {
        "list": {
            "listItems": [
                {"checked": False, "text": "Tester Text 1"},
                {"checked": False, "text": "Tester Text 2"}
            ]
        }
    }
}

2. 让客户端库处理JSON序列化

不要手动将字典转为JSON字符串,直接把Python字典传入API方法即可。示例代码:

from googleapiclient.discovery import build
from google.oauth2 import service_account

# 加载服务账号凭证
credentials = service_account.Credentials.from_service_account_file(
    'path/to/your/service-account.json',
    scopes=['https://www.googleapis.com/auth/keep']
)

# 构建Keep API客户端
keep_service = build('keep', 'v1', credentials=credentials)

# 创建笔记
try:
    note = keep_service.notes().create(body=note_body).execute()
    print(f"笔记创建成功,ID: {note['name']}")
except Exception as e:
    print(f"错误详情: {e}")

3. 验证服务账号权限

  • 确认Cloud Console中已启用Google Keep API
  • 检查服务账号是否拥有keep.notes.create权限,必要时重新配置授权

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 17:52:36