Chrome Web Store Publish API を使用する

概要

Chrome Web Store Publish API には、Chrome ウェブストアでアイテムをプログラムで作成、更新、公開するための REST エンドポイントのセットが用意されています。

初期設定を行う

Chrome ウェブストアに対して REST 呼び出しを開始する前に、Chrome Web Store API を有効にし、OAuth 同意画面を設定して、API アクセスキーを取得する必要があります。以降のセクションでは、このプロセスについて説明します。

Chrome ウェブストア API を有効にする

  1. Google Cloud コンソールに移動します。
  2. 新しいプロジェクトを作成するか、既存のプロジェクトを選択します。 Google Console で新しいプロジェクトを作成する
  3. 検索バーに「Chrome Web Store API」と入力します。
  4. Chrome ウェブストア API を有効にします。

OAuth 同意画面を構成する

  1. OAuth 同意画面に移動します。
  2. [External]、[Create] の順に選択します。 OAuth 同意画面を作成する
  3. [アプリ情報] の必須項目(下記のリストを参照)を入力し、[保存して次へ] をクリックします。
    • アプリ名
    • ユーザー サポートのメールアドレス。
    • デベロッパーの連絡先メールアドレス。
  4. スコープをスキップします。[保存]、[続行] の順にクリックします。
  5. メールアドレスを [テストユーザー] に追加し、[保存]、[続行] の順にクリックします。

アクセスキーを取得する

  1. [認証情報] に移動します。
  2. [認証情報を作成]、[OAuth クライアント ID] の順にクリックします。 認証情報を作成
  3. [Application type] で [Desktop App] を選択します。
  4. 名前を入力して [作成] をクリックします。

コンソールにクライアント ID とクライアント シークレットが表示されます。

OAuth アプリケーションのテスト

API で操作するためのアクセス トークンを取得できます。たとえば、ブラウザに次の URL を入力します。$CLIENT_ID はアプリの URL に置き換えます。

https://accounts.google.com/o/oauth2/auth?response_type=code&scope=https://www.googleapis.com/auth/chromewebstore&client_id=$CLIENT_ID&redirect_uri=urn:ietf:wg:oauth:2.0:oob

リクエストしたスコープに対する権限を承認するように求めるページが表示されます。

権限リクエストの UI

[同意する] をクリックしてコードをコピーします。次のようになります。

コードをコピーするための UI

この値を使用して、アクセス トークンをリクエストします。たとえば、curl を使用してアクセス トークンを取得するには、次のコマンドを実行します($CLIENT_ID、$CLIENT_SECRET、$CODE の値を上記の値に置き換えます)。

> curl "https://accounts.google.com/o/oauth2/token" -d \
"client_id=$CLIENT_ID&client_secret=$CLIENT_SECRET&code=$CODE&grant_type=authorization_code&redirect_uri=urn:ietf:wg:oauth:2.0:oob"

これにより、次のような結果が返されます。

{
  "access_token" : "ya29...",
  "expires_in" : 3600,
  "refresh_token" : "1/rwn...",
  "scope": "https://www.googleapis.com/auth/chromewebstore",
  "token_type" : "Bearer",
}

これで、access_token を使用して API を呼び出せるようになりました。更新トークンを使用して、今後のアクセス トークンを取得することもできます。トークンの有効期限は 1 時間です。

API の使用

アクセス トークンを取得すると、拡張機能で Chrome Web Store Publish API を使用できるようになります。新しいアイテムの作成、既存のアイテムの更新、アイテムの公開を行うためのエンドポイントがあります。

Publish API を使用する際の考慮事項は次のとおりです。

Chrome Web Store Publish API について詳しくは、こちらをご覧ください。

パッケージをアップロードして新しいストアアイテムを作成する

Endpoint: https://www.googleapis.com/upload/chromewebstore/v1.1/items
Type: POST
Header Parameters: 
  $TOKEN: the access token
Body content: the package file to upload

コマンドラインに次の例を入力します。

> curl \
-H "Authorization: Bearer $TOKEN"  \
-H "x-goog-api-version: 2" \
-X POST \
-T $FILE_NAME \
-v \
https://www.googleapis.com/upload/chromewebstore/v1.1/items

パッケージをアップロードして既存のストアアイテムを更新する

Endpoint: https://www.googleapis.com/upload/chromewebstore/v1.1/items/$ITEM_ID
Type: PUT
Header Parameters: 
  $TOKEN: the access token
Body content: the package file to upload

$ITEM_ID は、ウェブストアの既存のアイテムの ID です。

> curl \
-H "Authorization: Bearer $TOKEN"  \
-H "x-goog-api-version: 2" \
-X PUT \
-T $FILE_NAME \
-v \
https://www.googleapis.com/upload/chromewebstore/v1.1/items/$ITEM_ID

アイテムの一般公開

Endpoint: https://www.googleapis.com/chromewebstore/v1.1/items/$ITEM_ID/publish
Type: POST
Header Parameters: 
  $TOKEN: the access token
> curl \
-H "Authorization: Bearer $TOKEN"  \
-H "x-goog-api-version: 2" \
-H "Content-Length: 0" \
-X POST \
-v \
https://www.googleapis.com/chromewebstore/v1.1/items/$ITEM_ID/publish

Trusted Tester にアイテムを公開する

Endpoint: https://www.googleapis.com/chromewebstore/v1.1/items/$ITEM_ID/publish?publishTarget=trustedTesters
Type: POST
Header Parameters: 
  $TOKEN: the access token
> curl \
-H "Authorization: Bearer $TOKEN"  \
-H "x-goog-api-version: 2" \
-H "Content-Length: 0" \
-X POST \
-v \
https://www.googleapis.com/chromewebstore/v1.1/items/$ITEM_ID/publish?publishTarget=trustedTesters

商品アイテムのアップロード ステータスを確認する

Endpoint: https://www.googleapis.com/chromewebstore/v1.1/items/$ITEM_ID?projection=DRAFT
Type: GET
Header Parameters: 
  $TOKEN: the access token
curl \
-H "Authorization: Bearer $TOKEN"  \
-H "x-goog-api-version: 2" \
-H "Content-Length: 0" \
-H "Expect:" \
-X GET \
-v \
https://www.googleapis.com/chromewebstore/v1.1/items/$ITEM_ID?projection=DRAFT