【中級者向け】BubbleにGoogleカレンダーの認証を実装する

BubbleにGoogleカレンダーの認証を実装する

本記事では、Google Calendar APIにアクセスするためのOAuth2.0認証を実装する方法を解説します。

Google Calendar APIの認証をBubbleアプリに実装することで、アプリユーザーはBubbleアプリと特定のデータを共有することができます。

例えば、Bubbleで開発されたスケジュールアプリに認証機能を追加することで、Bubbleアプリで作成されたスケジュールとGoogleカレンダーのスケジュールを同期することが可能になります。

 

そもそもBubbleの使い方がわからないという方は、以下の記事を先にご覧になることをおすすめします。

Bubbleの登録から簡単な使い方について解説しています。

 

Google Cloud Platformの設定

STEP.1
Google Cloud Platformにアクセスします

Google Cloud Platformにアクセス

STEP.2
プロジェクトを新規作成します(既存のプロジェクトでも問題ありません)。

プロジェクトの新規作成1

プロジェクトの新規作成2

プロジェクトの新規作成3

STEP.3
APIとサービス > ライブラリ に移動します

APIライブラリのページへ移動

STEP.4
Google Calendar APIを検索し、有効化します。

Google Calendar APIの有効化1

Google Calendar APIの有効化2

Google Calendar APIの有効化3

STEP.5
サイドバーから「OAuth同意画面」のページに移動します

OAuth同意画面のページに移動

STEP.6
OAuth同意画面を下記画像の通りに設定します。

User Typeは外部

OAuth同意画面

アプリ情報は任意で設定します

OAuth同意画面の設定1

OAuth同意画面の設定2

OAuth同意画面の設定3

スコープは追加しなくて大丈夫です

スコープの設定1

スコープ設定2

 

注意
テスト環境では、OAuth2.0認証は事前に登録されたユーザーしか利用できません。認証テストに利用するメールアドレスを追加しておいて下さい。

403エラーの詳細

STEP.7
入力内容を確認したら、「ダッシュボードに戻る」をクリックします。

設定の確認1

設定の確認2

設定の確認3

STEP.8
サイドバーから「認証情報」のページに移動します。

認証情報のページに移動

STEP.9
認証情報を作成 > OAuthクライアントID をクリックします。

OAuthクライアントIDの作成

STEP.10
下の画像を参考に、OAuthクライアントIDを設定します。

OAuthクライアントIDの設定1

リダイレクトURIには、Bubbleアプリの任意のページ(認証後に戻ってくるページ)を指定

OAuthクライアントIDの設定2

STEP.11
作成したOAuthクライアントIDのJSONをダウンロードしておきます

OAuthクライアントIDのJSONダウンロード

 

OAuth2.0サーバーへのリダイレクト

アプリケーションがGoogleのOAuth 2.0サーバーと対話し、ユーザーに代わってAPIリクエストを実行することで、ユーザーの同意を取得する方法を示します。

アプリケーションは、ユーザー認証を必要とするGoogle APIリクエストを実行する前に、その同意を得る必要があります。

大まかなステップは以下の通りです。

  1. アプリケーションは、必要な権限のリストとともにユーザーをGoogleにリダイレクト
  2. ユーザーは、アプリケーションに権限を許可
  3. アプリケーションはユーザーに代わってAPIリクエストを実行
STEP.1
Google OAuth 2.0エンドポイントを直接呼び出す場合は、リダイレクトURLにパラメータを設定します
各パラメータの詳細を知りたい方は、以下のリンクをご覧ください

ウェブサーバー アプリケーションに OAuth 2.0 を使用する

STEP.2
Bubbleエディタを開き、"Open an external website"アクションにリダイレクトURLを設定します
リダイレクトURlの構造
 
STEP.3
ユーザーをGoogle OAuth2.0サーバーにリダイレクトするための設定はこれだけです。
注意
上の画面はテスト環境では常に表示されます
STEP.4
「続行」をクリックすると、Bubbleアプリにリダイレクトされます。このときURLの"code="に続く文字列をコピーしておいてください。

 

アクセストークンとリフレッシュトークンの取得

ユーザーがアクセス要求を認証すると、応答には認証コード(“code”)が含まれます。ユーザーがリクエストを承認しない場合、レスポンスにはエラーメッセージが含まれます。

エラー応答

https://testapp.bubbleapps.io/page?error=access_denied

認証応答

https://testapp.bubbleapps.io/page?code=4/P7q7W91a-oMsCeLvIaQm6bTrgtp7

認証コードと引き換えにトークンを取得することで、エンドユーザーのデータにアクセスすることが可能となります。

トークンには「アクセストークン」と「リフレッシュトークン」の2種類があり、APIリクエストに使用するアクセストークンは期限が短く、期限が切れたときはリフレッシュトークンで更新します。

これらトークンの引き換えにはAPIを使用します。

STEP.1
HTTPリクエストの詳細は以下の画像を参考にしてください。
STEP.2
Bubbleエディタを開き、API Connectorプラグインをインストールしてください。

API Connectorのインストール

STEP.3
アクセストークンおよびリフレッシュトークンを取得するAPIは以下の通りです。

トークン取得APIの設定1

トークン取得APIの設定2

STEP.4
"Initialize call"をクリックしてAPIを初期化します。

Initialize callをクリック

「SAVE」をクリックします

SAVEをクリック

 

トークンを取得するワークフローの設定

認証コードのリクエストは外部ページを開くため、アクションを続けて設定することはできません(Bubbleのワークフローでは、”Open an external website”は最後のアクションでなければならない)。

そのためトークン取得のAPIは、認証リクエストから戻ってきたとき、かつ”code”パラメータが存在するときに発火させます。

STEP.1
データタイプ「User」にアクセストークンとリフレッシュトークンを保存するフィールドを作成します

ユーザーフィールドの設定

STEP.2
「ページ読み込み時のURLにcodeが含まれているとき」を条件としたイベントを設定し、トークン取得のアクションを追加します

ワークフロー1

STEP.3
アクセストークンとリフレッシュトークンはユーザー情報として保存しておきます

ワークフロー2

 

認証→トークン取得の結果

これでBubbleアプリからGoogleカレンダーの権限をリクエストするフローが実装できました。

 

リフレッシュトークンが取得できない?

リフレッシュトークンはGoogleアカウントがそのアプリに対して認証を許可した初回のみ発行されます。

 

そのため、ここまでの手順で認証をテストしていると、そのGoogleアカウントではリフレッシュトークンが発行されない場合があります。

 

Googleアカウントからアプリの認証を取り消すには、Googleアカウントの管理画面 > セキュリティ > アカウントのアクセスできるサードパーティアプリ > 「アクセス権を削除」で消すことができます。

 

Googleアカウントの設定1

 

Googleアカウントの設定2

 

Googleアカウントの設定3