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

使用C#调用Blogger API发布文章时遇403权限禁止错误

解决Blogger API发布文章时的Forbidden权限问题

你用C#调用Blogger API发布文章时遇到了403 Forbidden错误,下面是具体的排查和修复步骤:

1. 处理服务账号权限(如果使用服务账号凭证)

你代码里加载的secret.json是Google服务账号的密钥文件,这类账号默认没有访问你的Blogger博客的权限,必须手动配置:

  • 打开Blogger博客后台,进入「设置」→「权限」
  • 点击「添加用户」,输入服务账号密钥文件里client_email字段对应的邮箱地址
  • 给该账号分配「作者」或「管理员」权限,保存后等待几分钟让权限生效

2. 移除冲突的API Key

代码里同时设置了HttpClientInitializer(身份凭证)和ApiKey,这两者不能混用:

  • API Key仅用于无需授权的公开数据请求(比如读取公开博客内容),发布文章需要依赖OAuth2凭证完成身份验证
  • 直接删掉ApiKey = "Key"这一行,修正后的服务初始化代码如下:
BloggerService service = new BloggerService(new BaseClientService.Initializer()
{
    HttpClientInitializer = credential,
    ApplicationName = "test"
});

3. 调整权限范围(可选但更规范)

把宽泛的BloggerService.Scope.Blogger换成更精确的发布权限范围,避免权限冗余或不足:

credential = GoogleCredential.FromStream(stream)
    .CreateScoped(BloggerService.Scope.BloggerPosts);

4. 验证博客ID正确性

确保代码中两处的BlogID完全匹配目标博客的真实ID:

  • 可在Blogger后台「设置」→「基本设置」里找到「博客ID」字段,直接复制粘贴到代码中,不要手动输入或写错

5. 确认Blogger API已启用

登录Google Cloud控制台,找到你的项目,确认「Blogger API」已经被启用(搜索API名称,点击启用按钮即可)

修正后的完整代码示例:

GoogleCredential credential;
using (var stream = new FileStream("secret.json", FileMode.Open, FileAccess.Read))
{
    credential = GoogleCredential.FromStream(stream)
        .CreateScoped(BloggerService.Scope.BloggerPosts);
};

BloggerService service = new BloggerService(new BaseClientService.Initializer()
{
    HttpClientInitializer = credential,
    ApplicationName = "test"
});

var newPost = new Post
{
    Title = "Mon nouvel article",
    Content = "Contenu de l'article...",
    Labels = new List<string> { "label1", "label2" }, 
    Blog = new Google.Apis.Blogger.v3.Data.Post.BlogData() { Id = "你的真实博客ID" }
};

var insertedPost = service.Posts.Insert(newPost, "你的真实博客ID").Execute();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 02:52:24