Google APIにアクセスするためのAccess Tokenを取得する

February 15, 2018

oauth

はじめに

YouTubeのAPI (YouTube Data APIYouTube Analytics / Reporting APIYouTube Content ID API) は、Google APIの一部です。Google APIを使用するには、access tokenが必要です。

ここでは、主にcliで使用することを目的とするために手っ取り早くaccess tokenを取得する方法について説明します。web appやサーバーサイドで走らせるソフトウェアからGoogle APIを使用する場合に関しては、GoogleのOAuthのページを参照ください。

プロジェクトを作成し、APIを有効にする

Google APIを使用する場合は、プロジェクトを作成します。作成したプロジェクトに対して、そのプロジェクトが使用するAPIを有効にします。

こちらのページを参考に、プロジェクトを作成し、使用したいAPIを有効にします。

Credentialを作成する

プロジェクトを作成したら、今度はそのプロジェクトで使用するcredentialを作成します。ここで作成するcredentialは、OAuth client IDです。

こちらのページを参考に、credentialを作成します。ここでは、Authorized redirect URIsに対してhttps://localhost/callbackを指定します 1。尚、実際にウェブのページからリクエストを送ることはしないので、Authorized JavaScript originsは空です。

作成した後、Client IDを確認しておいてください。このClient IDは後ほど使用します。

Access Tokenを取得する

それでは実際にaccess tokenを取得しましょう。

https://accounts.google.com/o/oauth2/v2/auth?
 scope={SCOPE}&
 include_granted_scopes=true&
 redirect_uri=https%3A%2F%2Flocalhost%2Fcallback&
 response_type=token&
 client_id={CLIENT_ID}

上記のURLの、{SCOPE}を使用したいAPIのscopeを、{CLIENT_ID}の部分を、先程作成したOAuth client IDのClient IDに置き換えてて、ウェブブラウザを使ってそのURLに行きます (上記のURLは、パラメータを見えやすくするために空白が入っているので、それらも削除して一行にします)。

scopeのリストは、このページから取得できます。複数のscopeを指定する場合は、各々のscopeを半角の空白で区切ります。例えば、YouTube Reporting APIのscopeの場合は、以下のようになります。

https://www.googleapis.com/auth/yt-analytics.readonly[半角の空白]https://www.googleapis.com/auth/yt-analytics-monetary.readonly

{SCOPE}と置き換える値は、URL encodeする必要があります。nodeで文字列をurl encodeする場合は、以下のようにできます。

$ node
> const q = require('querystring')
undefined
> q.escape('https://www.googleapis.com/auth/yt-analytics.readonly https://www.googleapis.com/auth/yt-analytics-monetary.readonly')
'https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyt-analytics.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyt-analytics-monetary.readonly'

ウェブブラウザでURLに行き、成功していればGoogle Accountのログインの画面にredirectします。scopeにYouTubeのAPIが含まれている場合は、Google Accountを選択した後にYouTubeのチャンネルも選択します。APIを呼びたい対象となるYouTubeのチャンネルを選択してください。

ログインが終わった後、https://localhost/callbackにredirectします 2。そのredirectしたURLの一部としてaccess tokenが渡されています。access_token={access tokenの値}という感じでURLに含まれているので、{access tokenの値}がaccess tokenとなります。

さいごに

ここでは、手っ取り早くaccess tokenを取得する方法を解説しました。GoogleのOAuthに関するより詳しい解説は、GoogleのOAuthのページを参照ください。


  1. 実際にこのURLでコールバックを受けることはしないので、値は何でも構いません。ただし、access tokenがここで指定したURLに送信されるため、httpsであり、なおかつ自分が所有しているドメインを指定するようにしましょう。つまりはlocalhostが無難だと思います。 [return]
  2. 私はlocalhost:443にbindしているソフトウェアは何もないので、ウェブブラウザは、サイトに接続できない旨の表示をすると思います。access tokenを取得するのに、それは問題ありません。 [return]
comments powered by Disqus