【问题标题】:404 Error when requesting comments via Google Blogger API通过 Google Blogger API 请求评论时出现 404 错误
【发布时间】:2018-02-20 08:19:16
【问题描述】:

我有一个脚本来帮助管理一个 Google Blogger 网站,它已经运行了一年多一点,没有任何问题。

几周前,该脚本停止正常工作,而是在为博客文章请求 cmets 列表时返回“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">

与 Try this API 比较

有点奇怪的是,当我使用"Try this API" 使用相同的blogIdpostId,我得到预期的响应......如果我还在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,到目前为止,我的脚本运行良好。我可以请求博客信息和帖子列表就好了。所以我已经排除了身份验证/授权的问题。

结论

  1. 我不认为授权是问题,因为其他资源有效
  2. 我没有对我的脚本进行任何更改...它只是有一天停止工作
  3. 升级到最新版本的 python 客户端库没有解决它
  4. 事实上,当我在文档站点上“尝试”API 时,我必须加上 / 前缀,这表明 API 资源有问题...
  5. 在我的 python 脚本中使用 / 前缀 postId 不能解决问题
  6. 为了清楚起见,blogIdpostId 是正确的,除了@987654336 之外,我已经仔细检查、三重检查、四重检查和复制粘贴完全相同的值到“试试这个 API” @-prefix,按预期工作。

【问题讨论】:

    标签: blogger google-api-python-client google-apis-explorer google-python-api


    【解决方案1】:

    我测试发现,当特定类型的 status 中不存在 cmets 时,它会给出 404 错误,而不是返回空结果。用一个活生生的例子来解释,对于状态live,我看到 cmets 像往常一样 -

    https://www.googleapis.com/blogger/v3/blogs/2295610366269213074/posts/1288081480380921154/comments?status=live&alt=json&maxResults=200&key=KEY

    但是对于状态spam,我收到 404 错误,因为该特定帖子的垃圾邮件队列中目前没有 cmets -

    https://www.googleapis.com/blogger/v3/blogs/2295610366269213074/posts/1288081480380921154/comments?status=spam&alt=json&maxResults=200&key=KEY

    如果您只是尝试访问已发布的 cmets 以获取应用程序中的帖子,则可以使用可公开访问的 Feed URL,其格式为 -

    https://www.blogger.com/feeds/<BlogID>/<PostID>/comments/default?alt=json&max-results=200
    

    【讨论】:

    • 我以为你是对的。但无法确认你在说什么。我有实时(已发布)的 cmets,但我无法列出 any cmets。即使没有 status= 过滤器,我在使用 python 客户端 sdk 库时也会得到 404。如果我为“try this api”中不存在的 cmets 添加一个过滤器,即使结果为空,我仍然会收到 200 响应。为什么如此不同?使用“try this api”时,它似乎会产生三种不同的结果(你的)、(我的)和第三种。
    • 使用 API Key 进行了尝试,如您所描述的那样工作。它不适用于使用 python 客户端库(使用 OAuth)
    • API 的行为有点不稳定。在他们的开发者论坛上提出这一点可能会有所帮助 - groups.google.com/forum/#!forum/bloggerdev。一个月前有人提出了类似的问题(groups.google.com/forum/#!topic/bloggerdev/_-LtSQ3Bu64),但似乎还没有人回复
    猜你喜欢
    • 2018-10-28
    • 2021-10-11
    • 2013-08-25
    • 1970-01-01
    • 1970-01-01
    • 2013-06-19
    • 1970-01-01
    • 2018-10-03
    • 1970-01-01
    相关资源
    最近更新 更多