使用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
相关产品推荐
相关产品推荐

