Blogger JSON API:使用 API

重要提示:我们将于 2024 年 9 月 30 日停止支持 v2.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。(如果控制台中未列出此 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 密钥位于该窗格的底部附近,位于标题为“Simple API Access”(简单 API 访问)的部分中。

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

API 密钥可以安全地嵌入网址中;不需要进行任何编码。

使用博客

检索博客

您可以向博客的 URI 发送 HTTP GET 请求,以检索特定博客资源的信息。博客资源的 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": ""
      }
    }
  ]
}

使用帖子

从博客中检索帖子

您可以向“Posts Collection”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
    }
  ]
}

检索特定帖子

您可以向 Posts 资源 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 状态代码和相应 Post 的内容:

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
    }
  ]
}

检索特定评论

您可以向 Comments Resource 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"
    }
  }
}

与用户合作

检索用户

您可以向“Users”资源 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 操作的查询参数记录在系统参数中。