新しくウェブサイトを作るたびにSearch Consoleでhttp/httpsとwwwあり/wwwなしのURLを登録するのが面倒になってきたので、APIを叩いて一気にできないものかと思ってSearch Console APIを使ってみることにしました。ということでGoogle APIs Client Library for PHPを使ってSearch Console APIを叩く手順をまとめました。

Google APIsで認証情報の作成

Googleが提供するAPIを利用する最初の手順として必須な認証情報の作成をします。手順は以下の通りです:
  • Google APIsに飛んで、左上のロゴの右にある「Project」から「プロジェクト作成」をクリックして新しいプロジェクトを作成
  • サイドメニューの「ライブラリ」を選んで検索窓に「Search Console API」と入力して「Google Search Console API」を選択
  • 「有効にする」をクリックして、切り替わった画面で「認証情報に進む」をクリック
  • APIを呼び出す場所を「ウェブサーバ」、アクセスするデータの種類で「ユーザデータ」を選択して「必要な認証情報」をクリック
  • 「OAuth 2.0 クライアント ID を作成する」で名前を適当に入れて、「承認済みのJavaScript生成元」にはhttp://localhost:8000、「承認済みのリダイレクトURI」にはhttp://localhost:8000/oauth2callback.phpと入力して、「クライアントIDの作成」をクリック
  • 「OAuth 2.0 同意画面を設定する」での「ユーザーに表示するサービス名」を適当に入力して「次へ」をクリック
  • 「認証情報をダウンロードする」の「ダウンロード」をクリックしてJSONファイルをダウンロードしたら、「完了」をクリック
これで認証情報の入ったJSONファイルが手に入ります。これを適当なディレクトリに入れておきましょう。

Google APIs Client Library for PHPのインストール

JSONファイルを入れたディレクトリに移動して、
composer require google/apiclient:^2.0
でライブラリをインストールしてください。そもそもcomposerが入っていない人はググってください。 vendor以下に色々とインストールされます。この中でSearch Console APIを使う場合にみるべき場所は
vendor/google/apiclient-services/src/Google/Service/Webmasters.php
vendor/google/apiclient-services/src/Google/Service/Webmasters/Resource/*
です。Resourceディレクトリ内のファイルには利用可能なメソッドが定義されているので、公式リファレンスと一緒に見ていくとおよそやりたいことができるようになります。

index.phpとoauth2callback.phpを用意

vendorと同階層にindex.phpとoauth2callback.phpを用意します。まずはindex.phpから。 簡単に説明も加えてあります。次にoauth2callback.phpはこんな感じ。 ソースコードにもコメントしていますが、流れとしては
  1. index.phpで認証情報をセットしてoauth2callback.phpへリダイレクト
  2. Googleの認証画面を表示
  3. 認証されるとoauth2callback.phpへ認可コードとともにリダイレクトされてくる
  4. 認可コードを元にアクセストークンを取得してindex.phpへリダイレクト
  5. 取得したアクセストークンを元にSearch Console APIを呼び出す
になっています。ここでは簡単のため認証情報を破棄するコードを書いていませんが、実際にウェブサービスに組み込む場合はもっと色々必要になります。

ローカルホストにアクセスして結果を表示

php -S localhost:8000 -t ./
でローカルホストを起動してhttp://localhost:8000へアクセスすると、認証画面が表示されて、認証後にSearch Consoleに登録されているサイト一覧が表示されます。

利用制限

Search Console APIは利用制限が設けられています。Search Analytics(検索アナリティクス)リソースについては
  • 1サイトあたりに5クエリ/秒、200クエリ/分
  • 1ユーザに5クエリ/秒、200クエリ/分
  • プロジェクトあたり100,000,000クエリ/日
その他のリソースについては
  • 1ユーザに20クエリ/秒、200クエリ/分
  • プロジェクトあたり100,000,000クエリ/日
となっています。