Google API を Bubble で利用する際、アクセストークンは通常 1 時間(3600 秒)で期限切れ になります。そのため、リフレッシュトークンを使用して、新しいアクセストークンを取得する仕組みを実装 する必要があります。
本記事では、Bubble の API Connector を使用して、Google のリフレッシュトークンを活用し、アクセストークンを自動的に更新する方法 を詳しく解説します。
BubbleでGoogle OAuth 2.0 の設定方法は以下の記事で解説しております。
Google Calendar API や Google Drive API、Gmail API などの Google アカウントに紐づいたサービスを Bubbleで利用するには、OAuth 2.0 を使用した認証が必要です。本記事では[…]
期限切れのアクセストークンをリフレッシュ
初回認証時に取得したリフレッシュトークンを使用して、アクセストークンを取得する方法を解説します。
Pluginタブから「API Connector」を開き、”Add another call”をクリックして新しくAPI呼び出しを作成します。
次に、以下の内容で設定します。
メソッドとエンドポイント
メソッド | POST |
エンドポイント | https://oauth2.googleapis.com/token |
Use as | Action |
Header
Content-Type | application/x-www-form-urlencoded |
Body type | Raw |
Body | client_id=_*_clientId_*_ &client_secret=_*_clientSecret_*_ &grant_type=refresh_token &refresh_token=_*_refreshToken_*_ |
Body Parameter
clientId | クライアントID |
clientSecret | クライアントシークレット |
refreshToken | リフレッシュトークン |
このAPIを実行すると、以下のようなレスポンスを取得できます。
{ "access_token": "[新しいアクセストークン]", "expires_in": 3599, "scope": "[スコープ]", "token_type": "Bearer", "id_token": "[IDToken]"}
以上でリフレッシュトークンの取得に関する解説は終了です。
Google API へのアクセス時にアクセストークンの期限を確認する方法
ここまでリフレッシュトークンを用いたアクセストークンの取得方法について解説しましたが、ここからはアクセストークンの期限を確認する方法を解説します。
Google APIのアクセストークンの期限は1時間(3600秒)であるため、Google API へのアクセス時にアクセストークンの期限を確認し、期限が切れている場合にリフレッシュトークンを用いて新しいアクセストークンを取得する必要があります。
必要な情報
アクセストークンの期限を確認するためには、以下の情報が必要になります。
- access_token: 実際に API リクエストに使用するトークン
- expires_in: トークンの有効期間(通常3600秒)
- 取得時間: トークンを取得した日時
access_tokenとexpires_inに関しては、前回アクセストークンを取得した際のレスポンスから保存する必要があり、取得時間はその保存したレコードのcreatedDate(もしくはModifiedDate)を参照します。
現在時刻と取得時間を比較
以上の情報を使用して、現在時刻と取得時間を比較します。
現在時刻 < 対象アクセストークン取得時間+expires_in(秒)、つまり期限が切れていない場合はそのままアクセストークンを使用できます。
現在時刻 > 対象アクセストークン取得時間+expires_in(秒)、つまりアクセストークンの期限が切れている場合は最初に開設した方法でアクセストークンを再度取得したうえでGoogle APIにアクセスする必要があります。
本記事では、Bubble の API Connector を活用し、リフレッシュトークンを用いてアクセストークンを更新する方法を解説しました。具体的には、Google OAuth 2.0 の設定方法、リフレッシュトークンを使用したアクセストークンの取得、アクセストークンの期限を確認する方法 を説明しました。
この仕組みを導入することで、Google API へのリクエストを安定的に実行することができます。適切なトークン管理を実装し、API 連携をスムーズに行いましょう!