エラーを処理する

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

必須の OAuth パラメータ

client_id や scope などの必要な OAuth パラメータの設定を忘れると、ブラウザの JavaScript コンソールにエラー メッセージが表示されます。

JavaScript コンソール エラー

OAuth 構成エラーを修正する

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

OAuth パラメータ値が無効

無効なクライアント 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
});