エラーを処理する

エラーはさまざまなレイヤで発生する可能性があります。通知の受信方法は、エラーがどこで発生したかによって異なります。

必要な OAuth パラメータが指定されていない

必要な OAuth パラメータ(client_id やスコープなど)の設定を忘れると、ブラウザの 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
});