エラーを処理する

エラーはさまざまなレイヤで発生する可能性があります。エラーが発生した場所に応じて、通知方法が異なる場合があります。

必須の OAuth パラメータ

必要な OAuth パラメータ(client_id やスコープなど)を設定していない場合、ブラウザの JavaScript コンソールにエラー メッセージが表示されます。

JavaScript コンソール エラー

OAuth 構成エラーを修正する

一部のエラーを解決するには、Google API Console で変更が必要になる場合があります。

OAuth パラメータ値が無効です

無効なクライアント ID、スコープ ID、レスポンス タイプ値など、無効な値を OAuth パラメータに設定すると、OAuth エラーページが表示されます。

OAuth エラー

OAuth エラー レスポンス

OAuth からエラー レスポンスが返される場合があります。その場合は、エラー レスポンスがパラメータとして渡され、callback 関数がトリガーされます。次の例は、OAuth エラー レスポンスです。

  {
    "error":"access_denied"
  }

以下にいくつか例を示します。

  1. ユーザーが OAuth リクエストを拒否します。
  2. prompt=none パラメータを含む OAuth リクエストの場合、ユーザーは認証されておらず、リクエストされたスコープの同意が事前構成されていません。

次の例は、成功とエラーの OAuth レスポンスを処理する方法を示しています。

function myCallback(response) {
  if (response.error) {
    // Handle error response
    ... ...
  } else if (response.code) {
    // Handle success code response
    ... ...
  }
}

OAuth 以外のエラー

OAuth では、次の場合に動作が定義されていません。

  1. ポップアップ ウィンドウが開かない。
  2. OAuth レスポンスが返される前にポップアップ ウィンドウが閉じられる。

このライブラリはこれらのエラーをキャプチャし、設定されている場合は error_callback をトリガーします。エラーの種類を必ず確認してください。そうしないと、このライブラリが新しいエラータイプをサポートしたときに、コードロジックが影響を受ける可能性があります。

function myErrorCallback(err) {
  if (err.type == 'popup_failed_to_open') {
    // The popup window is failed to open
    ... ...
  } else if (err.type == 'popup_closed') {
    // The popup window is closed before an OAuth response is returned
    ... ...
  }
}

const client = google.accounts.oauth2.initCodeClient({
  client_id: 'YOUR_GOOGLE_CLIENT_ID',
  scope: 'https://www.googleapis.com/auth/calendar.readonly',
  ux_mode: 'popup',
  callback: myCallback,
  error_callback: myErrorCallback
});