BubbleでGoogle OAuth 2.0 APIを設定する方法

BubbleでGoogle OAuth 2.0 APIを設定する方法

Google Calendar API や Google Drive API、Gmail API などの Google アカウントに紐づいたサービスを Bubbleで利用するには、OAuth 2.0 を使用した認証が必要です。本記事では、Bubble で Google OAuth 2.0 をセットアップする方法を詳しく解説します。

1. Google Cloud プロジェクトの作成

まず、Google Cloud Console でプロジェクトを作成し、利用したいAPIを有効化する必要があります。

Google Cloud Console にアクセスし、新しいプロジェクトを作成

Google Cloudへの登録が完了していない場合は、先に登録を行なってください。

新しいプロジェクトの作成は、ヘッダー左側のプロジェクト選択ボタンを押し、出てくるポップアップの右上のボタンより行うことができます。

1-1. 使用したいGoogle APIを検索し、有効化

サイドメニューの「APIとサービス」→「ライブラリ」から使用したいGoogle APIを検索し、APIの詳細画面でそのAPIを有効化します。

1-2. Google Auth Platformの構成

Google Cloud Console の左側メニューから「APIとサービス」→「OAuth同意画面」を開きます。

アプリ情報 – アプリ名アプリ名を入力
アプリ情報 – ユーザーサポートメール選択肢から選択
対象「外部」にチェック
連絡先情報Googleからのプロジェクト変更通知を受け取るメールアドレスを入力

1-3. 同意画面の設定

Google Cloud Console の左側メニューから「APIとサービス」→「OAuth同意画面」→「ブランディング」を開きます。
この画面で入力する情報は、ユーザのデータへアクセスするときに表示される画面で、データへのアクセス前に認証を行う画面のことです。

アプリ名アプリ名を入力
ユーザーサポートメール選択肢から選択
承認済みドメインbubbleapps.io
連絡先情報Googleからのプロジェクト変更通知を受け取るメールアドレスを入力

1-4. OAuth 2.0 クライアントIDの作成

Google Cloud Console の左側メニューから「APIとサービス」→「認証情報」を開きます。

「認証情報を作成」→「OAuth 2.0 クライアント ID」を選択。

「アプリケーションの種類」で「ウェブアプリケーション」を選択。

次に、リダイレクトURIを設定します。

このURIは、ユーザーがGoogleログインを行い、同意後にリダイレクトされるページを指します。
例えば、testapp.bubbleapps.io/redirectというページにリダイレクトし、そこで処理を行う場合

  • testapp.bubbleapps.io/redirect
  • testapp.bubbleapps.io/version-test/redirect

の2つのURIを登録してください。
このURIは後から変更することも可能です。

「作成」ボタンをクリックすると、OAuth クライアント IDクライアント シークレットが生成されます。

2. BubbleでのOAuth 2.0のセットアップ

2-1. 認可コードを取得する

何かしらのトリガーを用意して(Buttonクリックなど)、BubbleのAction「Open an external website」を配置し、Destinationに以下のリンクを入力する

https://accounts.google.com/o/oauth2/auth?client_id=[手順1-4で取得したクライアントID]&redirect_uri=[手順1-4で設定したリダイレクトURI]&scope=https://www.googleapis.com/auth/documents (使用したいサービスのスコープ)&response_type=code (認証をコードとして出力)&access_type=offline (オフラインでAPIを使用=リフレッシュキーを発行)&include_granted_scopes=true&prompt=consent(リフレッシュトークンを発行)

手順2-1で設定したActionを呼び出すと、Googleのログイン画面が表示されます。同意が完了し、アプリにリダイレクトされるとurlに認可コードが含まれて返ってきます。

https://testapp.bubbleapps.io/redirect?code=4/asugraaiwj-awrjiawurva&scope=https://www.googleapis.com/auth/documents

上記リンクの場合、code=と&の間の4/asugraaiwj-awrjiawurvaが認可コードになります。
この認可コードは次のアクセストークン・リフレッシュトークンの取得で使用します。

【注意】
この際、公開ステータスが”テスト中”の場合、テストユーザーに追加されたユーザーのみがアクセス可能です。
テストユーザーに含まれていないユーザーのログインはエラーが発生しますのでお気をつけください。
テストユーザーの追加は、Google Cloud Console の左側メニューから「APIとサービス」→「OAuth同意画面」→「対象」から可能です。

2-2. トークンを取得するAPIを設定

次に、認可コードを使用してアクセストークンとリフレッシュトークンを取得します。
Pluginタブに移動し、「API Connector」を開きます。

以下の通りにAPIを設定します。

メソッドとエンドポイント

メソッドPOST
エンドポイントhttps://oauth2.googleapis.com/token

Headers

KeyValuePrivate
Content-Typeapplication/x-www-form-urlencodedyes

Body type

Body typeRaw
Bodyclient_id=_*_clientId_*_
&client_secret=_*_clientSecret_*_
&redirect_uri=_*_redirecturi_*_
&grant_type=authorization_code
&code=_*_code_*_

Body parameters
この項目は、Bodyを入力すると自動的に表示されます。

KeyValue
clientIdクライアントID [手順1-4]
clientSecretクライアントシークレット [手順1-4]
redirecturiリダイレクトURI [手順1-4]
code認可コード [手順2-1]

入力が完了したら、左下のボタン”Initialize call”を実行します。

成功すると”access_token”,”expires_in”,”refresh_token”,”token_type”,”id_token”を取得することができます。

2-3. トークンを取得するAPIを実装

2-1の手順でGoogleログインを実施すると、リダイレクト後のurlに認可コードが含まれていました。
ここでは実際にそのコードを使用して自動的にトークンを取得できるように実装します。

まず、リダイレクトされるページ(今回はtestapp.bubbleapps.io/redirectとします)のeditor画面を開きます。
Workflowタブを開き、”Click here to add an event”をクリックして新たなイベント「Page is loaded(ページがロードされた時)」を選択します。
このイベントに、”Get code from page URL isn’t empty”という条件を設定します。これは、urlにcode=…というパラメータが含まれている場合に、何かしらのアクションを実行する(今回はトークンの取得)という意図です。
Get code from page URLの内容は以下の通りです。

TypeParameter
Parameter namecode
Typetext

次にトークンを取得するためのアクションを配置します。
Action > Plugins > [2-2で作成したAPI]を追加し、各パラメータを入力します。
必要に応じてこのアクションで得られるアクセストークンやリフレッシュトークンなどを保存してください。
このアクセストークンを使用することで、様々なGoogle APIを利用することができます。

アクセストークンについて
アクセストークンの有効期限は1時間です。期限が切れたアクセストークンを使用してAPIにアクセスしようとすると“401 UNAUTHENTICATED”のようなエラーレスポンスが返されます。
この際、再度アクセストークンを取得するためには「リフレッシュトークン」を使用して、アクセストークンを取得し直す必要があります。

まとめ

Bubble.ioでGoogle APIを利用するためには、OAuth 2.0を設定する必要があります。本記事では、以下のステップについて詳しく説明しました。

  1. Google Cloud Consoleでプロジェクトを作成し、APIを有効化
  2. OAuth 2.0の認証情報(クライアントIDとシークレット)を作成
  3. Bubble.ioのAPI Connectorを使用してOAuth 2.0の認証をセットアップ
  4. 認可コードを取得し、アクセストークンを取得してAPIリクエストを送信
  5. アクセストークンを定期的に更新し、継続的なAPI利用を可能にする

これらの設定を正しく行うことで、Bubble上でGoogleの各種API(Calendar、Drive、Gmailなど)を活用することができます。

今後、より高度なAPI連携を行いたい場合は、Google APIの公式ドキュメントを参照しながら、必要なスコープやエンドポイントを追加設定するとよいでしょう。