修复错误 400:将评论从 Google Business 导入 Python 时,redirect_uri 不匹配

Redirect_uri_mismatch

克服 Google Reviews API 集成中的 OAuth 2.0 重定向 URI 问题

将 Google Business Reviews 集成到 Python 中时,许多开发人员都会遇到常见错误“错误 400:redirect_uri_mismatch”。出现此问题的原因是 OAuth 2.0 设置中的重定向 URI 与 Google Cloud Console 中指定的内容不一致。该错误可能会阻止访问 Google Reviews API,而这对于以编程方式检索客户反馈至关重要。

Google 的 OAuth 2.0 政策非常严格,要求配置的重定向 URI 与身份验证期间使用的重定向 URI 精确匹配。正如许多开发人员报告的那样,未能正确配置这一点可能会导致挫败感,尤其是当重定向端口号频繁更改时。了解此问题对于确保 API 连接顺利并避免遇到此障碍至关重要。

在本文中,我们将逐步介绍解决访问 Google 商家评价时出现的 redirect_uri_mismatch 错误的步骤。通过仔细配置您的 OAuth 凭据,我们将消除此问题并使您能够轻松获取评论。该解决方案涉及正确设置重定向 URI 并将其与用于开发的本地主机环境保持一致。

无论您是获取评论来分析业务绩效还是将其显示在您的网站上,了解如何解决此错误都将节省时间并确保 API 交互成功。请按照以下步骤修复不匹配问题并不间断地访问您的 Google 商家评价。

命令 使用示例
flow.run_local_server(port=8080) 在指定端口上启动本地 Web 服务器来处理 OAuth 2.0 授权。此方法特定于在本地管理 OAuth 流,特别是对于 Google API。
response.raise_for_status() 如果 API 响应包含错误的 HTTP 状态代码,则引发 HTTPError。这有助于捕获不正确的 URL 或权限错误等问题,这对于处理 API 请求错误至关重要。
session.headers.update() 使用必要的授权令牌和内容类型更新会话对象的标头。这对于使用 OAuth 2.0 凭据通过 Google Business API 验证 API 请求至关重要。
flow.fetch_token(authorization_response=request.url) 在用户重定向回应用程序后获取 OAuth 令牌。此方法处理授权响应,这对于在 Flask 或本地环境中完成 OAuth 2.0 流程至关重要。
redirect_uri=url_for("oauth2callback", _external=True) 为 OAuth 流动态生成重定向 URI,指向回调 URL。 Flask 中的此方法可确保在 OAuth 身份验证过程中使用正确的重定向。
loguru.logger 用于实时调试的轻量级日志库。它提供易于阅读的日志输出,这对于跟踪 OAuth 身份验证和 API 请求的进度特别有帮助。
Flow.from_client_secrets_file() 使用 JSON 文件中存储的凭据初始化 OAuth 2.0 流。此命令特定于使用 Google API 处理 OAuth 身份验证,并用于在 Python 应用程序中加载客户端机密。
authorization_url, _ = flow.authorization_url() 生成重定向用户以进行 OAuth 身份验证所需的授权 URL。此命令对于在 Google API 中启动 OAuth 2.0 授权过程至关重要。

了解访问 Google Reviews API 的 OAuth 2.0 流程

上面提供的 Python 脚本旨在使用 Google My Business API 获取 Google Business Reviews。第一步涉及设置 OAuth 2.0 授权,这是安全地与 Google API 交互所必需的。此过程首先在 JSON 文件中指定您的 OAuth 客户端密钥,其中包含您的 Google Cloud 项目的凭据。这些凭证对于建立安全访问至关重要,并且 必须与 Google Cloud Console 中配置的一致。不匹配可能会导致类似“错误 400:redirect_uri_mismatch”的错误。

加载凭据后,脚本将使用 InstalledAppFlow 启动 OAuth 流。此流程启动本地服务器(在本例中为端口 8080)来处理用户授权。当用户授予权限时,脚本会收到一个访问令牌,这是向 Google Reviews API 发出授权请求所必需的。此过程是自动化的,并由 flow.run_local_server 方法处理,确保凭证安全存储并用于 API 请求。日志记录机制如 用于跟踪流程并确保清楚地记录遇到的任何问题以供调试。

成功获取凭据后,脚本使用 requests 库建立会话。此会话在其标头中包含访问令牌,这是对 Google 进行 API 调用时进行身份验证所必需的。该脚本使用您的企业帐户 ID 和位置 ID 构建正确的 API 端点 URL。通过向 URL 发送 GET 请求,脚本尝试获取指定营业地点的评论。它还包括错误处理以捕获 HTTP 错误,例如不正确的凭据或权限,确保有效管理请求期间遇到的任何问题。

来自 Google Reviews API 的响应被解析为 JSON 对象,其中包含营业地点的评论。如果请求成功,评论将打印到控制台,并且脚本会记录一条成功消息。这种模块化方法确保该流程易于重复,并且可以针对不同地点或帐户进行定制。此外,通过维护会话管理和错误处理的清晰结构,该脚本在使用 Google Reviews API 时优化了安全性和性能。这使得开发人员能够有效地访问和管理客户评论以进行分析或显示。

在 Google Reviews API 的 Python 中处理 Google OAuth 2.0 错误 400

使用 Python 和 Google OAuth 2.0 API 的解决方案,重点关注重定向 URI 设置

import requests
from google_auth_oauthlib.flow import InstalledAppFlow
from loguru import logger as log
# Replace with your actual Google Business account and location IDs
my_business_account_id = "YOUR_ACCOUNT_ID"
location_id = "YOUR_LOCATION_ID"
# Path to your OAuth 2.0 Client Secret JSON file
GCP_CREDENTIALS_PATH = "path/to/your/google_review_client.json"
# Set a consistent redirect URI
redirect_uri = "http://localhost:8080/"
# Setup the OAuth 2.0 flow with required scopes
flow = InstalledAppFlow.from_client_secrets_file(
    GCP_CREDENTIALS_PATH,
    scopes=["https://www.googleapis.com/auth/business.manage"],
    redirect_uri=redirect_uri)
# Run OAuth flow to obtain credentials
credentials = flow.run_local_server(port=8080)
log.debug(f"Credentials: {credentials}")
# Setup the API request session
session = requests.Session()
session.headers.update({"Authorization": f"Bearer {credentials.token}"})
# Construct the API endpoint URL
url = f"https://mybusiness.googleapis.com/v4/accounts/{my_business_account_id}/locations/{location_id}/reviews"
# Make API request and handle potential errors
try:
    response = session.get(url)
    response.raise_for_status()
    reviews = response.json()
    print("Reviews fetched successfully.")
    print(reviews)
except requests.exceptions.HTTPError as http_err:
    log.error(f"HTTP error: {http_err}")
except Exception as err:
    log.error(f"Unexpected error: {err}")

通过在 Google Cloud Console 中更新重定向 URI 解决 redirect_uri_mismatch

使用 Google Cloud Console 配置正确的重定向 URI 的解决方案

# Step 1: Open Google Cloud Console
# Step 2: Navigate to your project and go to "APIs & Services" > "Credentials"
# Step 3: Edit the OAuth 2.0 Client IDs settings
# Step 4: In "Authorized redirect URIs", add "http://localhost:8080/"
# Step 5: Save your changes
# After setting the correct redirect URI, re-run your Python script
# This ensures the OAuth 2.0 flow will use the correct URI during authentication

创建基于 Flask 的本地 Web 服务器来处理 Google OAuth 重定向

使用 Flask 更好地控制 OAuth 重定向 URI 处理的解决方案

from flask import Flask, redirect, request, session, url_for
from google_auth_oauthlib.flow import Flow
# Flask setup
app = Flask(__name__)
app.secret_key = "your_secret_key"
# Path to OAuth 2.0 Client Secret JSON
GCP_CREDENTIALS_PATH = "google_review_client.json"
@app.route("/authorize")
def authorize():
    flow = Flow.from_client_secrets_file(
        GCP_CREDENTIALS_PATH,
        scopes=["https://www.googleapis.com/auth/business.manage"],
        redirect_uri=url_for("oauth2callback", _external=True)
    )
    authorization_url, _ = flow.authorization_url()
    return redirect(authorization_url)
@app.route("/oauth2callback")
def oauth2callback():
    flow = Flow.from_client_secrets_file(
        GCP_CREDENTIALS_PATH,
        scopes=["https://www.googleapis.com/auth/business.manage"],
        redirect_uri=url_for("oauth2callback", _external=True)
    )
    flow.fetch_token(authorization_response=request.url)
    session["credentials"] = flow.credentials
    return redirect("/reviews")
# Run the Flask server
if __name__ == "__main__":
    app.run("localhost", 8080)

解决用于 Python 集成的 Google API 中的 OAuth 重定向问题

将 Google API 集成到 Python 应用程序时经常被忽视的一个关键方面是 API 的精确配置 。此设置对于 OAuth 2.0 身份验证至关重要,此 URI 中的不匹配通常会导致“错误 400:redirect_uri_mismatch”错误。 Google 的身份验证流程非常严格,以确保流程安全并遵循最佳实践。因此,开发人员需要确保 Google Cloud Console 中配置的重定向 URI 与其应用程序代码中使用的重定向 URI 完全匹配。

另一个重要方面是了解端口如何在 OAuth 流程中工作,尤其是在本地环境中工作时。开发人员在使用诸如 。建议修复端口号(例如, )以避免不匹配,这可以通过在代码中显式传递端口号来完成。这不仅可以确保一致性,还可以防止由于动态端口分配而出现的错误。

此外,管理您的 安全至关重要。包含客户端机密的 JSON 文件必须存储在安全位置,并且应定期刷新访问令牌。保持这些令牌更新可确保 API 调用保持有效,因为过期的令牌也可能导致身份验证问题。总体而言,仔细管理身份验证流程可确保集成更顺畅,并消除重定向 URI 不匹配错误等常见陷阱。

  1. 是什么导致 Google API 中出现“错误 400:redirect_uri_mismatch”?
  2. 此错误是由于代码中的重定向 URI 与 Google Cloud Console 中注册的重定向 URI 不匹配导致的。确保它们完全匹配。
  3. 使用时如何固定端口号 ?
  4. 要固定端口号,请通过传递指定静态端口,例如 8080 在 方法。
  5. 如果我的 过期了?
  6. 您应该使用 Google 的 OAuth 库实现令牌刷新逻辑,以便在当前令牌过期之前请求新令牌。
  7. 我可以在不注册服务帐号的情况下使用API​​吗?
  8. 不可以,您必须创建一个服务帐户并下载 JSON 密钥文件来验证您的应用程序才能访问 Google Reviews API。
  9. 为什么 测试期间不断改变?
  10. 当使用动态端口分配时通常会发生这种情况。要解决此问题,请在本地 OAuth 服务器设置中设置静态端口(例如 8080)。

要解决“错误 400:redirect_uri_mismatch”错误,必须正确配置 OAuth 2.0 凭据并确保代码中的重定向 URI 与 Google Cloud 中注册的重定向 URI 匹配。此步骤对于成功的 API 集成至关重要。

此外,管理会话标头并正确处理潜在的 HTTP 错误可确保顺利访问 Google Reviews API。通过修复端口并优化代码,开发人员可以有效地检索评论,从而使企业能够轻松监控客户反馈。

  1. 启用和设置Google Business Reviews API的详细步骤,包括OAuth 2.0配置,参考了官方 谷歌开发者文档
  2. 有关解决“错误 400:redirect_uri_mismatch”问题的信息源自对 堆栈溢出社区 ,各个开发人员分享了他们的经验和解决方案。
  3. 一般的 OAuth 2.0 最佳实践和配置技巧,特别是对于 Python,可以在官方指南中找到 Google Auth OAuthlib Python 文档