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