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

Google My Business API调用始终返回Invalid Request问题求助

问题排查与解决办法

1. 先确认Discovery文件没问题

你是靠Discovery File生成的本地gem,首先得确保这个JSON文件是Google My Business API V4的最新有效版本。私有API的Discovery文件容易有版本差异,或者你下载的文件本身有格式问题。

  • 重新从官方指定渠道获取V4版本的Discovery JSON
  • 对比你生成的lib/google-apis-mybusiness_v4里的服务定义,和官方公开的accountmanagement API结构,重点看请求路径、必填参数这些地方有没有差异

2. 换种授权方式试试

官方gem的授权逻辑和你本地生成的可能不一样,试试这两种写法:

写法一:直接用UserRefreshCredentials

跳过ClientSecrets的封装,直接给service配置授权:

require "google/apis/mybusiness_v4"

service = Google::Apis::MybusinessV4::MyBusinessService.new
service.authorization = Google::Auth::UserRefreshCredentials.new(
  client_id: secrets.client_id,
  client_secret: secrets.client_secret,
  refresh_token: user.refresh_token, # 有refresh token的话加上
  access_token: user.token,
  scope: "https://www.googleapis.com/auth/business.manage"
)

response = service.list_accounts

写法二:手动加请求头

如果上面的不行,直接给请求塞Authorization头:

service = Google::Apis::MybusinessV4::MyBusinessService.new
service.client_options.default_headers["Authorization"] = "Bearer #{user.token}"

response = service.list_accounts

3. 检查生成的方法需要的参数

本地生成的list_accounts可能有必填参数你没传。去lib/google-apis-mybusiness_v4/generated/google/apis/mybusiness_v4/service.rb里看list_accounts的定义,确认是不是要传page_size、page_token这类参数。比如:

# 假设需要page_size参数
service.list_accounts(page_size: 10)

4. 开调试日志看具体错误

Google API的Invalid request一般藏着更详细的错误信息,开调试日志看完整请求响应:

require "logger"
service = Google::Apis::MybusinessV4::MyBusinessService.new
service.logger = Logger.new(STDOUT)
service.logger.level = Logger::DEBUG

# 再执行请求
service.list_accounts

日志会输出完整的请求URL、头信息、响应内容,能看到具体错在哪(比如权限不够、参数缺了、API版本不对)

5. 再核对API权限

虽然你用了business.manage范围,但Google My Business API有些操作可能需要更细的权限,或者你的项目没拿到API访问权限。再确认:

  • 你的Google Cloud项目已经被批准访问My Business V4 API
  • 用户授权时确实请求了正确的scope,检查授权流程里的scope和代码里的一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 02:40:38