エラーを処理する

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

必須の 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
});