概要
Chrome Web Store Publish API には、Chrome ウェブストアでアイテムをプログラムで作成、更新、公開するための REST エンドポイントのセットが用意されています。
初期設定を行う
Chrome ウェブストアに対して REST 呼び出しを開始する前に、Chrome Web Store API を有効にし、OAuth 同意画面を設定して、API アクセスキーを取得する必要があります。以降のセクションでは、このプロセスについて説明します。
Chrome ウェブストア API を有効にする
- Google Cloud コンソールに移動します。
- 新しいプロジェクトを作成するか、既存のプロジェクトを選択します。
- 検索バーに「Chrome Web Store API」と入力します。
- Chrome ウェブストア API を有効にします。
OAuth 同意画面を構成する
- OAuth 同意画面に移動します。
- [External]、[Create] の順に選択します。
- [アプリ情報] の必須項目(下記のリストを参照)を入力し、[保存して次へ] をクリックします。
- アプリ名
- ユーザー サポートのメールアドレス。
- デベロッパーの連絡先メールアドレス。
- スコープをスキップします。[保存]、[続行] の順にクリックします。
- メールアドレスを [テストユーザー] に追加し、[保存]、[続行] の順にクリックします。
アクセスキーを取得する
- [認証情報] に移動します。
- [認証情報を作成]、[OAuth クライアント ID] の順にクリックします。
- [Application type] で [Desktop App] を選択します。
- 名前を入力して [作成] をクリックします。
コンソールにクライアント 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
リクエストしたスコープに対する権限を承認するように求めるページが表示されます。
[同意する] をクリックしてコードをコピーします。次のようになります。
この値を使用して、アクセス トークンをリクエストします。たとえば、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 を使用する際の考慮事項は次のとおりです。
- デベロッパーが既存の拡張機能を公開または更新するには、Google アカウントで 2 段階認証プロセスを有効にする必要があります。
- 新しいアイテムを公開する前に、デベロッパー ダッシュボードの [ストアの掲載情報] タブと [プライバシー対策] タブに入力する必要があります。
- 新規または既存のアイテムが公開されると、審査プロセスに入ります。詳しくは、審査プロセスをご覧ください。
- アップデートをリリースするには、マニフェストの version フィールドの数字を増やします。
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