我有一个脚本来帮助管理Google Blogger网站,它已经运行了一年多没有任何问题。
几周前,脚本停止正常工作,而是在请求博客帖子的评论列表时返回“404 Not Found”错误。
ERROR: <HttpError 404 when requesting https://www.googleapis.com/blogger/v3/blogs/<RedactedBlogId>/posts/<RedactedPostId>/comments?status=live&alt=json&maxResults=200 returned "Not Found">
我也尝试了“listByBlog”资源
ERROR: <HttpError 404 when requesting https://www.googleapis.com/blogger/v3/blogs/<RedactedBlogId>/comments?status=live&alt=json&maxResults=200 returned "Not Found">
与试用此API相比
有点奇怪的是,当我使用"Try this API"与blogId
和postId
相同时,我得到了预期的响应....如果我还使用正斜杠前缀postId
,即/<RedactedPostId>
没有正斜杠前缀,我得到一个空的结果。我复制/粘贴postId
时偶然发现了这一点。如果我检查devtools中的网络选项卡,请求的URL(当收到正确的响应时)是https://content.googleapis.com/blogger/v3/blogs/<RedactedBlogId>/posts/%2F<RedactedPostId>/comments?key=<RedactedKey>
唯一的主要区别(除了真正奇怪的前缀要求......)是域名。
Python客户端库
使用Python Client Library v1.6.5,我的脚本工作正常,到目前为止。我可以请求博客信息和帖子列表。所以我排除了身份验证/授权的问题。
结论
/
作为前缀,这表明API资源存在问题......postId
前缀/
无法解决问题blogId
和postId
是正确的,我已经仔细检查,三重检查,四重检查和复制粘贴完全相同的值到“尝试此API”,除了/
前缀,按预期工作。我测试并发现当特定类型的status
中没有任何注释时,它会产生404错误而不是返回空结果。要用一个实例来解释,对于状态live
,我会像往常一样看到评论 -
https://www.googleapis.com/blogger/v3/blogs/2295610366269213074/posts/1288081480380921154/comments?status=live&alt=json&maxResults=200&key=KEY
但对于状态spam
,我收到404错误,因为该特定帖子的垃圾邮件队列中目前没有评论 -
https://www.googleapis.com/blogger/v3/blogs/2295610366269213074/posts/1288081480380921154/comments?status=spam&alt=json&maxResults=200&key=KEY
如果您只是尝试访问应用程序中发布的帖子的发布评论,那么您可以使用公开访问的Feed网址,其格式为 -
https://www.blogger.com/feeds/<BlogID>/<PostID>/comments/default?alt=json&max-results=200