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

从Google Business Review导入数据到Python遇Error 400: redirect_uri_mismatch错误

解决Google商家评论API导入Python时的redirect_uri_mismatch错误

问题根源

你代码中调用flow.run_local_server(port=0)时,port=0会让系统随机分配可用端口,导致实际请求的redirect_uri端口(比如52271)和你设置的http://localhost:8080/不一致,触发Google OAuth的重定向URI不匹配错误。

解决方案

1. 修正代码中的端口配置

将flow.run_local_server(port=0)改为指定固定端口8080,和你定义的redirect_uri保持一致:

credentials = flow.run_local_server(port=8080)

2. 确认Google Cloud Console的重定向URI配置

在Google Cloud Console的OAuth 2.0客户端设置中,确保已添加http://localhost:8080/到授权重定向URI列表中:

  • 进入Google Cloud Console → 你的项目 → API和服务 → 凭据 → 找到对应的OAuth 2.0客户端ID → 编辑 → 添加http://localhost:8080/并保存。

3. 替代方案:使用服务账号认证(适合服务器端/无人值守场景)

如果你之前创建了服务账号,可直接用服务账号密钥认证,无需OAuth授权码流:

  • 先在Google My Business后台将服务账号邮箱添加为商家管理员
  • 使用google.oauth2.service_account模块加载密钥:
import requests
from google.oauth2 import service_account
from loguru import logger as log

my_business_account_id = "..."
location_id = "..."
SERVICE_ACCOUNT_KEY_PATH = "service-account-key.json"  # 服务账号的JSON密钥文件

# 加载服务账号凭据
credentials = service_account.Credentials.from_service_account_file(
    SERVICE_ACCOUNT_KEY_PATH,
    scopes=["https://www.googleapis.com/auth/business.manage"]
)

# 构建API请求
session = requests.Session()
session.headers.update(
    {"Authorization": f"Bearer {credentials.token}", "Content-Type": "application/json"}
)

url = f"https://mybusiness.googleapis.com/v4/accounts/{my_business_account_id}/locations/{location_id}/reviews"

try:
    log.info(f"请求API地址: {url}")
    response = session.get(url)
    response.raise_for_status()
    reviews = response.json()
    log.success("评论获取成功")
    print(reviews)
except requests.exceptions.HTTPError as http_err:
    log.error(f"HTTP错误: {http_err}")
except Exception as err:
    log.error(f"未知错误: {err}")

修正后的原代码版本

import requests
from google_auth_oauthlib.flow import InstalledAppFlow
from loguru import logger as log

# 替换为实际ID
my_business_account_id = "..."
location_id = "..."

GCP_CREDENTIALS_PATH = "google_review_client.json"
redirect_uri = "http://localhost:8080/"

# 初始化OAuth流程
flow = InstalledAppFlow.from_client_secrets_file(
    GCP_CREDENTIALS_PATH,
    scopes=["https://www.googleapis.com/auth/business.manage"],
    redirect_uri=redirect_uri,
)

# 指定固定端口8080,不再随机分配
credentials = flow.run_local_server(port=8080)

log.debug(f"凭据信息: {credentials}")

session = requests.Session()
session.headers.update(
    {"Authorization": f"Bearer {credentials.token}", "Content-Type": "application/json"}
)

url = f"https://mybusiness.googleapis.com/v4/accounts/{my_business_account_id}/locations/{location_id}/reviews"

try:
    log.info(f"请求API地址: {url}")
    response = session.get(url)
    response.raise_for_status()
    reviews = response.json()
    log.success("评论获取成功")
    print(reviews)
except requests.exceptions.HTTPError as http_err:
    log.error(f"HTTP错误: {http_err}")
except Exception as err:
    log.error(f"未知错误: {err}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 04:47:35