Blogger JSON API:使用 API

重要事項:我們將在 2024 年 9 月 30 日停止支援 JSON API 2.0 版。為確保相關功能持續運作,請將使用 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 金鑰,但並非必要。
  • 如果要求不需要經過授權 (例如要求公開資料),則應用程式必須為此要求提供 OAuth 2.0 憑證及/或 API 金鑰,視何種方式對您來說比較方便而定。

關於授權通訊協定

您的應用程式必須使用 OAuth 2.0 對要求進行授權,系統不支援其他授權通訊協定。

注意:Blogger JSON API 目前不支援同時要求資料存取權 (混合式) 或全網域授權委派 (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 發出的公開資料要求都必須附有 ID,可以是 API 金鑰或授權權杖。

如要取得 API 金鑰,請前往 API 控制台。在「服務」窗格中啟用 [api_name]。如果畫面顯示《服務條款》,請詳閱並接受條款。

接著,前往「API 存取權」窗格。API 金鑰位於該窗格底部,位於「簡易 API 存取」專區中。

取得 API 金鑰後,您的應用程式可以將查詢參數 key=yourAPIKey 附加到所有要求網址。

API 金鑰可以安全地嵌入網址中,不需任何編碼。

使用網誌

擷取網誌

您可以向 Blog 的 URI 傳送 HTTP GET 要求,藉此擷取特定 Blog 資源的資訊。部落格資源的 URI 格式如下:

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

要求

範例如下:

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

由於使用者無須經過驗證即可擷取公開的 Blog,因此您不需要在 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": ""
  }
}

擷取使用者的網誌

您可以將 HTTP GET 要求傳送至 Blog 集合 URI,藉此擷取使用者的部落格清單:

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

使用貼文

從網誌擷取文章

您可以將 GET 要求傳送至 Posts Collection URI,藉此從特定網誌擷取 Posts 清單。貼文集合的 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 狀態碼和 Posts 清單:

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

擷取特定貼文

您可以將 GET 要求傳送至「Posts Resource URI」,從網誌中擷取特定的「Post」。Posts 資源的 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"
  }
}

使用註解

擷取貼文的留言

您可以將 GET 要求傳送至留言集合 URI,藉此擷取貼文的留言清單。留言集合 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

由於使用者不必經過驗證即可從公開的 Google 新聞動態中擷取留言,因此您不需要在 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
    }
  ]
}

擷取特定留言

您可以將 GET 要求傳送至留言資源 URI,藉此從貼文中擷取特定留言。評論資源的 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

由於使用者不必經過驗證即可從公開的 Google 新聞動態中擷取留言,因此您不需要在 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"
    }
  }
}

使用網頁

擷取網誌的網頁

您可以將 GET 要求傳送至網頁集合 URI,藉此擷取網誌的網頁清單。網頁集合的 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"
        }
      }
    }
  ]
}

擷取特定頁面

您可以將 GET 要求傳送至網頁資源 URI,從網誌中擷取特定網頁。Pages 資源的 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"
    }
  }
}

與使用者合作

擷取使用者

您可以將 HTTP GET 要求傳送至使用者資源 URI,藉此擷取使用者資訊:

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 作業的查詢參數,請參閱「系統參數」一文。