Node.js调用Blogger API创建文章成功但内容为空问题求助
解决Node.js调用Blogger API创建空白文章的问题
嘿,我来帮你搞定这个问题!你说调用API后收到成功提示,但文章是空的——这种情况我之前也踩过坑,90%的概率是你传递文章内容的格式不对,没符合Blogger API v3的要求。结合你给出的代码片段(用了官方的googleapis库),我给你拆解下问题和解决方法:
核心问题:请求体结构错误
当使用googleapis的Blogger客户端时,posts.insert接口要求你把文章的标题、内容放在requestBody这个参数里,而不是直接作为顶层参数传递。如果没这么做,API会忽略你传递的标题和内容,自然就生成空白文章了。
修正后的示例代码
假设你已经完成了OAuth2授权流程(拿到了有效的authClient),正确的调用代码应该是这样的:
const { google } = require('googleapis'); const blogger = google.blogger('v3'); // 替换成你自己的授权客户端(比如通过OAuth2获取的) const authClient = /* 你的授权对象,例如:new google.auth.OAuth2(...) 并完成授权 */; // 异步创建博客文章 async function createBlogPost() { try { const response = await blogger.posts.insert({ blogId: '你的博客ID', // 替换成目标博客的ID auth: authClient, requestBody: { title: '我的测试文章标题', content: '<h1>Hello Blogger!</h1><p>这是通过Node.js API创建的文章内容,支持HTML格式哦</p>' } }); console.log('文章创建成功,链接:', response.data.url); } catch (error) { console.error('创建失败:', error.message); } } // 执行创建 createBlogPost();
关键注意事项
requestBody是核心:必须把title和content嵌套在requestBody对象里,这是googleapis库的规范,它会自动把这个对象转换成Blogger API需要的JSON请求体。- 内容格式:
content字段需要是HTML格式,纯文本也可以,但用HTML标签能更好地控制文章排版。 - 博客ID验证:确保你用的
blogId是正确的——可以通过Blogger后台的“设置”→“基本设置”找到,或者调用blogger.blogs.getByUrl接口通过博客网址获取。 - 授权范围:确认你的OAuth2授权请求包含了
https://www.googleapis.com/auth/blogger这个权限范围,没有的话可能会导致写入内容失败(不过你已经能创建空白文章,这个概率较低,但还是建议检查)。
如果之前你是把title和content直接写在posts.insert的参数顶层,比如这样:
// 错误示例!不要这么写 blogger.posts.insert({ blogId: 'xxx', auth: authClient, title: '测试标题', // 这里直接放顶层会被忽略 content: '测试内容' })
那肯定会生成空白文章,赶紧改成上面的正确格式就行~
内容的提问来源于stack exchange,提问作者Maher Afrasiab
相关产品推荐
相关产品推荐

