概要
Google DocsにAPI経由でアクセスする方法を説明しています。
前回は、プロジェクトの登録など、アクセスに必要な準備を行いました。(こちらをご覧ください)
今回は、Bubble側での準備を行います。
準備するもの
アクセストークン、リフレッシュトークン、クライアントID、クライアントシークレット、アプリのスコープ、トークンの有効期限。
BubbleにGoogleTokenテーブルを作って、各データを含んだレコードを1つだけ作成しておきます。
用語の説明
・アクセストークン・・・APIにアクセスするためのトークン。3600秒で期限が切れる。更新したら別な文字列に変わる。
・リフレッシュトークン・・・期限が切れたアクセストークンを更新(リフレッシュ)するためのトークン。基本的に変わらない。
uURLでトークンのリフレッシュの動作確認
Bubbleに組み込む前に、以下のようにcURLでトークンのリフレッシュができるか確認をしておきます。
curl -XPOST https://www.googleapis.com/oauth2/v4/token –data “client_secret=[クライアントシークレット]&grant_type=refresh_token&refresh_token=[リフレッシュトークン]&client_id=[クライアントID]”
うまくいくと、以下のように新しいアクセストークンが返ってきます。
{
“access_token”: “ya29.abcdefg1234567”,
“expires_in”: 3599,
“scope”: “https://www.googleapis.com/auth/documents”,
“token_type”: “Bearer”
}
BubbleのAPI Connectorに設定する
API Connectorプラグインをインストールしておきます。
API Connectorプラグインの設定画面を開き、「Add another API」で、「Google API」としてAPI名をつけておきます。
「Add another call」をクリックして、以下のcallを追加します。
・Name: Refresh Token Call
・Use as: Action
・Data type: JSON
・POST
・https://accounts.google.com/o/oauth2/token
「Add parameter」で、以下の4項目を追加します。grant_type以外は後で設定するので、valueは空にして、「Private」のチェックを外します。
・grant_type : refresh_token
・client_id
・client_secret
・refresh_token
「Manually enter API response」をクリックします。(「Initialize call」は使わず、手動で結果を設定します)
cURLであらかじめ取得しておいた結果を入力、または下記をコピペします。(JSONの各項目名と型が指定できればよいので)
{
“access_token”: “abcdefg1234567”,
“expires_in”: 3599,
“scope”: “https://www.googleapis.com/auth/documents”,
“token_type”: “Bearer”
}
各項目の型を設定します。
access_token、scope、token_typeはtext型、expires_inはnumber型に設定されるので「SAVE」をクリックします。
Bubbleでトークンのリフレッシュの動作確認
デザイン画面でボタンを配置し、Workflowに以下の2つのアクションを設定します。
(step 1)APIの呼び出し
「plugin」ー「Google API – Refresh Token Call」を選択します。
各パラメタを、「Insert dynamic data」の「Do a search for」を使って代入します。
(step 2)呼び出し結果のaccess_tokenを保存
「Data(Things)」ー「Make changes to thing」を選択します。
・DBのaccess_tokenを、ステップ1で取得した値で更新します。
・Expire Dateを、現在時刻 + ステップ1で取得したexpires_in – 60秒で更新します。(タイミングによっては期限をギリギリにすると期限切れになることがあるので、期限より60秒前にしてあります)
動作確認
Step-by-stepで実行して動作を確認します。
(step 1)API呼び出しでパラメタが空の場合は、DBのテーブルのプライバシー設定を確認します。
(step 2)呼び出し結果が保存されない場合は、Things to changeを確認します。
DBの画面を開き、「Refresh data」をクリックして最新化し、access_tokenやModified Dateが書き変わっていることを確認します。
次回
次回はいよいよGoogle Docs APIにアクセスして、文書のコピーや文字列の置換やPDF出力などを行います。
参考URL
・Google DocsにAPI経由でアクセスする(準備編その1)
https://qiita.com/jansnap/items/0b11b28460e1c4d7322f
・Bubbleから自作APIを呼び出す(API Connector)
https://note.com/jansnap/n/nf41daf8717e2
・Google Play Developer API – 更新トークンを使用する
https://developers.google.com/android-publisher/authorization?hl=ja#using_the_refresh_token