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

使用Blogger API调用返回403错误,已授权仍无资源访问权限

Blogger API 403 Forbidden 问题排查与解决

核心问题分析

你遇到的403错误源于两个关键问题:请求URL的参数错误,以及服务账户未获得目标博客的访问权限。


1. 修复URL中的错误授权参数

你的请求同时使用了两种授权方式,且URL中的access_token=%7Baccess_token%7D是未替换的占位符,直接导致授权逻辑冲突:

  • 已经通过请求头Authorization: Bearer {access_token}传递了有效令牌,无需在URL中重复添加access_token参数
  • 若要使用API Key,需替换%7Bblogger_api_key%7D为实际密钥,或直接省略该参数(Bearer令牌已足够完成授权)

修正后的请求代码:

# 确保导入requests库(你的代码中遗漏了该导入)
import requests

response = requests.post(
    'https://blogger.googleapis.com/v3/blogs/6084243137377471911/posts',
    headers=headers,
    json=data,
)

2. 给服务账户分配博客访问权限

服务账户是独立的身份实体,默认无法访问你的个人Blogger博客,需完成以下操作:

  • 添加服务账户为博客管理员:
    1. 登录Blogger后台,进入目标博客的「设置」页面
    2. 找到「权限」选项,添加服务账户JSON文件中client_email字段对应的邮箱为博客管理员
  • Google Workspace域内博客额外配置:
    需要在Workspace管理控制台为服务账户开启域范围委派,允许其模拟域内用户访问Blogger API,同时确保权限范围设置正确。

3. 验证权限范围正确性

确认SCOPES变量设置为符合需求的Blogger权限范围:

SCOPES = ['https://www.googleapis.com/auth/blogger']

该范围允许服务账户创建、编辑博客文章,匹配你的发布需求。


4. 简化令牌获取代码

可以省略手动调用refresh的步骤,google-auth库会自动处理令牌刷新逻辑:

from google.oauth2 import service_account
import requests

SERVICE_ACCOUNT_FILE = '你的服务账户JSON文件路径'
SCOPES = ['https://www.googleapis.com/auth/blogger']

creds = service_account.Credentials.from_service_account_file(
    SERVICE_ACCOUNT_FILE, scopes=SCOPES
)
# 若为Workspace域内博客,需模拟特定用户时添加此行
# creds = creds.with_subject('目标用户邮箱')

headers = {
    'Authorization': f'Bearer {creds.token}',
    'Accept': 'application/json',
}

response = requests.post(
    'https://blogger.googleapis.com/v3/blogs/6084243137377471911/posts',
    headers=headers,
    json=data,
)
print(response.text)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 04:13:17