GoogleのサービスをNode.jsで操作したいなと思いました。当記事ではNode.jsでGoogle APIをOAuth認証して、APIを使うところまでの手順をまとめてみたいと思います。
develop or drink ? ©
今回はGoogleウェブマスターツールにあるSearch Consoleの検索アナリティクスを、Node.jsから取得する方法を例として話を進めていきます。
目次
今回の大まかな流れ
今回はNode.jsでGoogle APIを操作するために必要な認証や情報を取得していきます。その流れは下記の通りです。
- Google Dev Consoleを開く
- 認証アプリケーション(プロジェクト)を作成
- 認証クライアントIDとシークレットキーを取得
- OAuth認証後、リレフッシュトークン取得
- トークンを利用してNode.jsでAPI操作(別記事)
それでは詳しく見ていきましょう。
Goolge Developers Consoleを開く
Node.jsでSearch Consoleをコントロールするには、まずクライアントIDとクライアントシークレットを取得していきます。Goolge Developers Consoleを開きましょう。
Google
Google Developers Console
プロジェクトの作成
まずはロゴの右側にあるプロジェクト名を選択後、表示される+ボタンでプロジェクトを新規作成します。
Goolge API Managerでプロジェクトを新規作成 ©
作成するプロジェクト名を聞かれますので、今回は一例としてMySearchConsole
と入力し、作成します。
プロジェクト名を入力し、作成 ©
プロジェクトが作成されるまでに数十秒かかります。プロジェクトが作成されたらライブラリ
メニューから作成したプロジェクトを選択しておきましょう。
作成したプロジェクト名を選択 ©
APIのIDとシークレットキーを取得
続いて、操作したいAPIを選択していきます。今回はSearch Console APIを操作しますので、検索欄に「Search Console」と入力してGoogle Search Console API
を選択します。
API名を表示させ、Google Search Console APIを選択 ©
APIを有効にするかを聞かれますので、有効にします。
Google Search Console APIを有効にする ©
認証情報を作成します。
Google Search Console APIの認証情報を作成 ©
「プロジェクトへ認証情報の追加」という画面が表示されますので、使用するAPIやAPIを呼び出す場所を指定します。
プロジェクトへ認証情報の追加 ©
今回はコマンドライン(ターミナル)からAPIを呼び出しますので、下記のような項目に設定します。
選択項目 | 内容 |
仕様するAPI | Google Search Console API |
APIを呼び出す場所 | その他のUI(Windows、CLIツールなど) |
選択後、上記画像のように必要な認証情報を選択して、次の項目に進みます。
続いて、下記画面のようにクライアントIDの作成を選択します。
クライアントIDの作成 ©
次の項目で、認証時に表示させるサービス名を入力していきます。今回は一例としてmySearchConsole
と入力します。入力後次へを選択します。
サービス名の入力 ©
プロジェクトの認証情報を作る設定が以上で完了しました。最後に完了を選択します。
認証情報が作成された ©
APIマネージャートップに移動しますので、最後に、先程作成したクライアントIDを選択します。
クライアントIDの選択 ©
クライアントIDを選択すると、クライアントID
とクライアント シークレット
が表示されますので、これをメモします。
クライアントIDとシークレットをメモする ©
リフレッシュトークンを取得する
前回までの手順で、Google APIのクライアントIDとクライアントシークレットを取得していきました。最後に、Node.jsでリフレッシュトークンを取得していきます。
Node.jsとコマンドラインについては下記をご覧ください。
任意のディレクトリでNode.jsのコードを書いていきますので、必要なファイルを作成していきます。
bash1 2 3 4 5
| $ mkdir your-dir $ cd your-dir $ npm init $ npm install googleapis readline --save $ vim get_token.js
|
続いて、get_token.js
を下記のように記述していきます。
get_token.js1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| "use strict";
const CLIENT_ID = 'あなたのクライアントIDを入力' const CLIENT_SECRET = 'あなたのクライアントシークレットを入力'
const google = require('googleapis') const readline = require('readline') const rl = readline.createInterface({ input : process.stdin, output: process.stdout }); const REDIRECT_URL = 'urn:ietf:wg:oauth:2.0:oob' const SCOPE = ['https://www.googleapis.com/auth/webmasters'] const oauth2Client = new google.auth.OAuth2(CLIENT_ID, CLIENT_SECRET, REDIRECT_URL) let getAccessToken = (oauth2Client) => { let url = oauth2Client.generateAuthUrl({ access_type: 'offline', scope : SCOPE });
console.log('右記のURLをブラウザで開いてください: ', url) rl.question('表示されたコードを貼り付けてください: ', (code) => { oauth2Client.getToken( code, (err, tokens) => { console.log('トークンが発行されました') console.log(tokens) console.log('上記の情報を大切に保管してください') }); }); }
getAccessToken(oauth2Client)
|
SCOPE
で指定しているAPIスコープについては、操作したいGoogleのアプリケーションによって異なりますが、下記が参考になります。
Google Identity Platform
OAuth 2.0 Scopes for Google APIs
Google APIのスコープ一覧です。Google DriveやAnaytics APIなどもあります。
上記のコードが記述できたら、node.jsを実行します。
実行すると次のようなURLが表示されますので、指示通りブラグザで開きます。
bash1 2 3
| $ node get_token.js 右記のURLをブラウザで開いてください: https://accounts.google.com/o/oauth2/auth?access_type=offline&scope=**** 表示されたコードを貼り付けてください:
|
ブラウザでURLを開くと、次のような画面が表示され、認証許可を求められますので許可をします。
Googleアカウントでログイン後、認証の許可 ©
認証の許可後、コードが表示されますのでコピーします。
コードが表示される ©
最後に表示されたコードをコマンドラインに入力します。
bash1 2 3
| $ node get_token.js 右記のURLをブラウザで開いてください: https://accounts.google.com/o/oauth2/auth?access_type=offline&scope=**** 表示されたコードを貼り付けてください: <ここでコードを貼り付ける>
|
コードを貼り付けると、アクセストークンとリフレッシュトークンが取得できます。refresh_token
の内容をメモしておきましょう。
bash1 2 3 4 5 6 7 8 9 10
| $ node get_token.js 右記のURLをブラウザで開いてください: https://accounts.google.com/o/oauth2/auth?access_type=offline&scope=**** 表示されたコードを貼り付けてください: <ここでコードを貼り付ける>
トークンが発行されました { access_token: '****', refresh_token: '****', token_type: '****', expiry_date: 150***** } 上記の情報を大切に保管してください
|
以上の手順で、リフレッシュトークンが取得できました。次回はリフレッシュトークンを使って、node.jsで実際にAPIを操作していきたいと思います。
参考にさせて頂いた記事
下記の記事を参考にさせて頂きました。ありがとうございます。
Qiita
Google Drive Web APIを使う(node編)
Goolge Drive Web APIで画像をアップロードする例を扱った解説。アクセストークンを取得する方法やスコープを解説している。
前述しましたが、Google APIのOAuth2.0スコープの一覧です。
Google Identity Platform
OAuth 2.0 Scopes for Google APIs
Google APIのスコープ一覧です。Google DriveやAnaytics APIなどもあります。