Blogger JSON API:使用 API

重要提示:我们将于 2024 年 9 月 30 日停止支持 2.0 版 JSON API。为确保可继续使用功能,请将依赖 v2.0 JSON API 的应用更新到最新 API 版本。如需获取最新版本,请使用左侧导航栏中的链接。

本文档介绍了如何通过 RESTful 调用样式使用 Blogger JSON API 的常见功能。

目录

简介

本文档适用于想要编写可与 Blogger JSON API 进行交互的应用的开发者。Blogger 是一款用于创建网站的工具,可让用户持续发布自己的想法。

如果您不熟悉 Blogger 的概念,则应在开始编码之前阅读使用入门

授权请求并识别应用

您的应用向 Blogger JSON API 发送的每个请求都需要向 Google 标识您的应用。您可以通过以下两种方式识别应用:使用 OAuth 2.0 令牌(也用于向请求授权)和/或使用应用的 API 密钥。下文介绍了如何确定要使用其中某个选项:

  • 如果请求需要授权(例如请求某人的私有数据),则应用必须在请求中提供 OAuth 2.0 令牌。应用也可以提供 API 密钥,但并非必须如此。
  • 如果请求不需要授权(例如对公开数据的请求),则应用必须提供 API 密钥和/或 OAuth 2.0 令牌(选择对您来说最方便的方式即可)。

关于授权协议

您的应用必须使用 OAuth 2.0 向请求授权。不支持其他授权协议。

注意:Blogger JSON API 目前不支持在请求数据访问权限 (hybrid) 或全网域授权委托 (2LO) 的同时登录。

使用 OAuth 2.0 给请求授权

针对非公开用户数据的 Blogger JSON API 请求必须由经过身份验证的用户授权。

根据您所编写的应用的类型,OAuth 2.0 的具体授权流程会略有不同。以下常规流程适用于所有应用类型:

  1. 创建应用时,您需要向 Google 注册应用。然后,Google 会提供您稍后需要用到的信息,例如客户端 ID 和客户端密钥。
  2. 在 Google API 控制台的“服务”窗格中激活 Blogger JSON API。(如果控制台中未列出此项,请跳过此步骤。)
  3. 当您的应用需要访问用户数据时,它会请求 Google 提供特定范围的访问权限。
  4. Google 会向用户显示 OAuth 对话框,要求用户授权您的应用请求他们的某些数据。
  5. 如果用户批准,Google 会为您的应用提供一个短期访问令牌
  6. 您的应用会请求获取用户数据,并在请求中附上该访问令牌。
  7. 如果 Google 确定您的请求和令牌有效,就会返回请求的数据。

有些流程还包含其他步骤,例如使用刷新令牌获取新的访问令牌。如需详细了解适用于各类应用的流程,请参阅 Google 的 OAuth 2.0 文档

以下是 Blogger JSON API 的 OAuth 2.0 范围信息:

https://www.googleapis.com/auth/blogger

如需通过 OAuth 2.0 请求访问权限,您的应用既需要范围信息,也需要 Google 在应用注册期间提供的信息(如客户端 ID 和/或客户端密钥)。

提示:Google API 客户端库可帮您处理某些授权流程。这些库支持多种编程语言;如需了解详情,请参阅库和示例页面

获取和使用 API 密钥

针对公开数据的 Blogger JSON API 请求必须附带标识符,该标识符可以是 API 密钥或身份验证令牌。

要获取 API 密钥,请访问 API 控制台。在“服务”窗格中,激活 [api_name];如果出现服务条款,请阅读并接受。

接下来,转到 API 访问权限窗格。API 密钥位于该窗格底部附近标题为“简单 API 访问”的部分。

在您获得 API 密钥后,您的应用便可将查询参数 key=yourAPIKey 附加到所有请求网址。

API 密钥可以安全地嵌入网址中,而无需进行任何编码。

使用博客

检索博客

您可以通过向博客的 URI 发送 HTTP GET 请求来检索特定 Blogs 资源的信息。Blogs 资源的 URI 格式如下:

https://www.googleapis.com/blogger/v2/blogs/blogId

请求

示例如下:

GET https://www.googleapis.com/blogger/v2/blogs/2399953&key=YOUR-API-KEY

由于用户无需进行身份验证即可检索公开博客,因此您无需随此 GET 请求提供 Authorization HTTP 标头;但如果您不提供该标头,则确实需要提供 API 密钥。

Blogger 也有私密博客,这些博客需要进行身份验证。

响应

如果请求成功,服务器会返回 HTTP 200 OK 状态代码和博客数据:

200 OK

{
  "kind": "blogger#blog",
  "id": "2399953",
  "name": "Blogger Buzz",
  "description": "The Official Buzz from Blogger at Google",
  "published": "2007-04-23T22:17:29.261Z",
  "updated": "2011-08-02T06:01:15.941Z",
  "url": "http://buzz.blogger.com/",
  "selfLink": "https://www.googleapis.com/blogger/v2/blogs/2399953",
  "posts": {
    "totalItems": 494,
    "selfLink": "https://www.googleapis.com/blogger/v2/blogs/2399953/posts"
  },
  "pages": {
    "totalItems": 2,
    "selfLink": "https://www.googleapis.com/blogger/v2/blogs/2399953/pages"
  },
  "locale": {
    "language": "en",
    "country": "",
    "variant": ""
  }
}

检索用户的博客

您可以向博客集合 URI 发送 HTTP GET 请求,以检索用户的博客列表:

https://www.googleapis.com/blogger/v2/users/userId/blogs

请求

下面是一个 GET 请求示例,其中列出了用户的博客:

GET https://www.googleapis.com/blogger/v2/users/self/blogs
Authorization: /* OAuth 2.0 token here */

注意:用户必须经过身份验证才能列出他们自己的博客,因此您必须通过 GET 请求提供 Authorization HTTP 标头。

响应

如果请求成功,服务器将返回 HTTP 200 OK 状态代码以及用户博客列表的完整表示形式:

200 OK

{
  "kind": "blogger#blogList",
  "items": [
    {
      "kind": "blogger#blog",
      "id": "4967929378133675647",
      "name": "Brett's Test Blawg",
      "description": "",
      "published": "2010-10-06T23:33:31.662Z",
      "updated": "2011-08-08T06:50:02.005Z",
      "url": "http://brettmorgan-test-blawg.blogspot.com/",
      "selfLink": "https://www.googleapis.com/blogger/v2/blogs/4967929378133675647",
      "posts": {
        "totalItems": 13,
        "selfLink": "https://www.googleapis.com/blogger/v2/blogs/4967929378133675647/posts"
      },
      "pages": {
        "totalItems": 1,
        "selfLink": "https://www.googleapis.com/blogger/v2/blogs/4967929378133675647/pages"
      },
      "locale": {
        "language": "en",
        "country": "",
        "variant": ""
      }
    }
  ]
}

使用帖子

检索博客中的帖子

您可以向帖子集合 URI 发送 GET 请求,以检索给定博客中的帖子列表。帖子集合的 URI 格式如下:

https://www.googleapis.com/blogger/v2/blogs/blogId/posts

请求

示例如下:

GET https://www.googleapis.com/blogger/v2/blogs/2399953/posts&key=YOUR-API-KEY

由于用户无需进行身份验证即可从公开博客中获取帖子,因此您无需为此 GET 请求提供 Authorization HTTP 标头;但如果您不提供该标头,则需提供 API 密钥。

Blogger 也有私密博客,这些博客需要进行身份验证。

响应

如果请求成功,服务器将返回 HTTP 200 OK 状态代码和帖子列表:

200 OK

{
  "kind": "blogger#postList",
  "nextPageToken": "CgkIChiAkceVjiYQ0b2SAQ",
  "prevPageToken": "CgkIChDBwrK3mCYQ0b2SAQ",
  "items": [
    {
      "kind": "blogger#post",
      "id": "7706273476706534553",
      "blog": {
        "id": "2399953"
      },
      "published": "2011-08-01T19:58:00.000Z",
      "updated": "2011-08-01T19:58:51.947Z",
      "url": "http://buzz.blogger.com/2011/08/latest-updates-august-1st.html",
      "selfLink": "https://www.googleapis.com/blogger/v2/blogs/2399953/posts/7706273476706534553",
      "title": "Latest updates, August 1st",
      "content": "elided for readability",
      "author": {
        "id": "401465483996",
        "displayName": "Brett Wiltshire",
        "url": "http://www.blogger.com/profile/01430672582309320414",
        "image": {
          "url": "http://4.bp.blogspot.com/_YA50adQ-7vQ/S1gfR_6ufpI/AAAAAAAAAAk/1ErJGgRWZDg/S45/brett.png"
         }
      },
      "replies": {
        "totalItems": "0",
        "selfLink": "https://www.googleapis.com/blogger/v2/blogs/2399953/posts/7706273476706534553/comments"
      }
    },
    {
      "kind": "blogger#post",
      "id": "6069922188027612413",
      elided for readability
    }
  ]
}

检索特定帖子

您可以通过向帖子资源 URI 发送 GET 请求来检索博客中的特定帖子。帖子资源的 URI 格式如下:

https://www.googleapis.com/blogger/v2/blogs/blogId/posts/postId

请求

示例如下:

GET https://www.googleapis.com/blogger/v2/blogs/2399953/posts/7706273476706534553&key=YOUR-API-KEY

由于用户无需进行身份验证即可从公开博客中获取帖子,因此您无需为此 GET 请求提供 Authorization HTTP 标头;但如果您不提供该标头,则需提供 API 密钥。

Blogger 也有私密博客,这些博客需要进行身份验证。

响应

如果请求成功,服务器将返回 HTTP 200 OK 状态代码以及帖子的内容:

200 OK

{
  "kind": "blogger#post",
  "id": "7706273476706534553",
  "blog": {
    "id": "2399953"
  },
  "published": "2011-08-01T19:58:00.000Z",
  "updated": "2011-08-01T19:58:51.947Z",
  "url": "http://buzz.blogger.com/2011/08/latest-updates-august-1st.html",
  "selfLink": "https://www.googleapis.com/blogger/v2/blogs/2399953/posts/7706273476706534553",
  "title": "Latest updates, August 1st",
  "content": "elided for readability",
  "author": {
    "id": "401465483996",
    "displayName": "Brett Wiltshire",
    "url": "http://www.blogger.com/profile/01430672582309320414",
    "image": {
      "url": "http://4.bp.blogspot.com/_YA50adQ-7vQ/S1gfR_6ufpI/AAAAAAAAAAk/1ErJGgRWZDg/S45/brett.png"
    }
  },
  "replies": {
    "totalItems": "0",
    "selfLink": "https://www.googleapis.com/blogger/v2/blogs/2399953/posts/7706273476706534553/comments"
  }
}

处理评论

检索帖子的评论

您可以通过向评论集合 URI 发送 GET 请求来检索帖子的评论列表。评论集合的 URI 格式如下:

https://www.googleapis.com/blogger/v2/blogs/blogId/posts/postId/comments

请求

示例如下:

GET https://www.googleapis.com/blogger/v2/blogs/2399953/posts/6069922188027612413/comments&key=YOUR-API-KEY

由于用户无需进行身份验证即可从公开博客中获取评论,因此您无需为此 GET 请求提供 Authorization HTTP 标头;但如果您不提供该标头,则需提供 API 密钥。

Blogger 也有私密博客,这些博客需要进行身份验证。

响应

如果请求成功,服务器将返回 HTTP 200 OK 状态代码和注释列表:

200 OK

{
  "kind": "blogger#commentList",
  "nextPageToken": "CgkIFBDwjvDXlyYQ0b2SARj9mZe9n8KsnlQ",
  "prevPageToken": "CgkIFBisvMGRlyYQ0b2SARj9mZe9n8KsnlQ",
  "items": [
    {
       "kind": "blogger#comment",
       "id": "9200761938824362519",
       "post": {
         "id": "6069922188027612413"
       },
       "blog": {
         "id": "2399953"
       },
       "published": "2011-07-28T19:19:57.740Z",
       "updated": "2011-07-28T21:29:42.015Z",
       "selfLink": "https://www.googleapis.com/blogger/v2/blogs/2399953/posts/6069922188027612413/comments/9200761938824362519",
       "content": "elided",
       "author": {
         "id": "530579030283",
         "displayName": "elided",
         "url": "elided",
         "image": {
           "url": "elided"
         }
       }
    },
    {
      "kind": "blogger#comment",
      "id": "400101178920857170",
      elided for readability
    }
  ]
}

检索特定评论

您可以通过向评论资源 URI 发送 GET 请求来从帖子中检索特定评论。评论资源的 URI 格式如下:

https://www.googleapis.com/blogger/v2/blogs/blogId/posts/postId/comments/commentId

请求

示例如下:

GET https://www.googleapis.com/blogger/v2/blogs/2399953/posts/6069922188027612413/comments/9200761938824362519&key=YOUR-API-KEY

由于用户无需进行身份验证即可从公开博客中获取评论,因此您无需为此 GET 请求提供 Authorization HTTP 标头;但如果您不提供该标头,则需提供 API 密钥。

Blogger 也有私密博客,这些博客需要进行身份验证。

响应

如果请求成功,服务器会返回 HTTP 200 OK 状态代码和注释数据:

200 OK

{
  "kind": "blogger#comment",
  "id": "9200761938824362519",
  "post": {
    "id": "6069922188027612413"
  },
  "blog": {
    "id": "2399953"
  },
  "published": "2011-07-28T19:19:57.740Z",
  "updated": "2011-07-28T21:29:42.015Z",
  "selfLink": "https://www.googleapis.com/blogger/v2/blogs/2399953/posts/6069922188027612413/comments/9200761938824362519",
  "content": "elided",
  "author": {
    "id": "530579030283",
    "displayName": "elided",
    "url": "elided",
    "image": {
      "url": "elided"
    }
  }
}

使用页面

检索博客页面

您可以向页面集合 URI 发送 GET 请求,以检索博客页面的列表。页面集合的 URI 格式如下:

https://www.googleapis.com/blogger/v2/blogs/blogId/pages

请求

示例如下:

GET https://www.googleapis.com/blogger/v2/blogs/4967929378133675647/pages&key=YOUR-API-KEY

由于用户无需进行身份验证即可从公开博客中获取网页,因此您无需为此 GET 请求提供 Authorization HTTP 标头;但如果您不提供该标头,则需提供 API 密钥。

Blogger 也有私密博客,这些博客需要进行身份验证。

响应

如果请求成功,服务器会返回 HTTP 200 OK 状态代码和网页列表:

200 OK

{
  "kind": "blogger#pageList",
  "items": [
    {
      "kind": "blogger#page",
      "id": "273541696466681878",
      "blog": {
        "id": "4967929378133675647"
      },
      "published": "2011-07-14T16:16:00.000Z",
      "updated": "2011-07-14T16:16:23.602Z",
      "url": "http://brettmorgan-test-blawg.blogspot.com/p/static-content.html",
      "selfLink": "https://www.googleapis.com/blogger/v2/blogs/4967929378133675647/pages/273541696466681878",
      "title": "Static Content",
      "content": "elided for readability",
      "author": {
        "id": "901569848744",
        "displayName": "brett",
        "url": "http://www.blogger.com/profile/16258312240222542576",
        "image": {
          "url": "https://resources.blogblog.com/img/b16-rounded.gif"
        }
      }
    }
  ]
}

检索特定页面

您可以向网页资源 URI 发送 GET 请求,以便从博客中检索特定网页。网页资源的 URI 格式如下:

https://www.googleapis.com/blogger/v2/blogs/blogId/pages/pageId

请求

示例如下:

GET https://www.googleapis.com/blogger/v2/blogs/4967929378133675647/pages/273541696466681878&key=YOUR-API-KEY

由于用户无需进行身份验证即可从公开博客中获取网页,因此您无需为此 GET 请求提供 Authorization HTTP 标头;但如果您不提供该标头,则需提供 API 密钥。

Blogger 也有私密博客,这些博客需要进行身份验证。

响应

如果请求成功,服务器会返回 HTTP 200 OK 状态代码和相应页面数据:

200 OK

{
  "kind": "blogger#page",
  "id": "273541696466681878",
  "blog": {
    "id": "4967929378133675647"
  },
  "published": "2011-07-14T16:16:00.000Z",
  "updated": "2011-07-14T16:16:23.602Z",
  "url": "http://brettmorgan-test-blawg.blogspot.com/p/static-content.html",
  "selfLink": "https://www.googleapis.com/blogger/v2/blogs/4967929378133675647/pages/273541696466681878",
  "title": "Static Content",
  "content": "elided for readability",
  "author": {
    "id": "901569848744",
    "displayName": "brett",
    "url": "http://www.blogger.com/profile/16258312240222542576",
    "image": {
      "url": "https://resources.blogblog.com/img/b16-rounded.gif"
    }
  }
}

与用户合作

检索用户

您可以向用户资源 URI 发送 HTTP GET 请求来检索用户信息:

https://www.googleapis.com/blogger/v2/users/userId

请求

下面是一个 GET 请求示例,其中列出了用户的博客:

GET https://www.googleapis.com/blogger/v2/users/self
Authorization: /* OAuth 2.0 token here */

注意:用户必须经过身份验证才能列出他们自己的信息,因此您必须随 GET 请求提供 Authorization HTTP 标头。

响应

如果请求成功,服务器会返回 HTTP 200 OK 状态代码以及指向用户博客列表的链接:

200 OK

{
  "kind": "blogger#user",
  "id": "901569848744",
  "selfLink": "https://www.googleapis.com/blogger/v2/users/901569848744",
  "blogs": {
    "selfLink": "https://www.googleapis.com/blogger/v2/users/901569848744/blogs"
  }
}

标准查询参数

以下查询参数可用于 Blogger API 中的所有方法和所有资源。

系统参数中介绍了适用于所有 Blogger API 操作的查询参数。