エラーはさまざまなレイヤで発生する可能性があります。エラーが発生した場所に応じて、通知方法が異なる場合があります。
必須の OAuth パラメータが指定されていません
必要な OAuth パラメータ(client_id やスコープなど)を設定していない場合、ブラウザの JavaScript コンソールに次のようなエラー メッセージが表示されます。
OAuth 構成エラーを修正する
一部のエラーを解決するには、Google API Console で変更が必要になる場合があります。
- クライアント ID を作成します(まだ作成されていない場合)。
- ポップアップ UX の場合は、現在のフローをトリガーする可能性のあるすべてのドメインを
Authorized JavaScript origins
に追加します。 - リダイレクト UX の場合は、認可レスポンスを受信する可能性のあるすべての URL を
Authorized redirect URIs
に追加します。 - OAuth 同意画面を適切に構成します。
- 必要に応じて、確認を受けるためのアプリを送信します。
- Google の OAuth 2.0 ポリシーに準拠するには、追加の手順が必要になる場合があります。
OAuth パラメータ値が無効です
無効なクライアント ID、スコープ ID、レスポンス タイプ値など、無効な値を OAuth パラメータに設定すると、OAuth エラー ページが表示されます。
OAuth エラー レスポンス
OAuth からエラー レスポンスが返される場合があります。その場合、エラー レスポンスがパラメータとして渡され、callback
関数がトリガーされます。次の例は、OAuth エラー レスポンスです。
{ "error":"access_denied" }
以下に例を示します。
- ユーザーが OAuth リクエストを拒否します。
prompt=none
パラメータを含む OAuth リクエストの場合、ユーザーは認証されておらず、リクエストされたスコープの同意が事前構成されていません。
次の例は、OAuth の成功レスポンスとエラー レスポンスを処理する方法を示しています。
function myCallback(response) {
if (response.error) {
// Handle error response
... ...
} else if (response.code) {
// Handle success code response
... ...
}
}
OAuth 以外のエラー
OAuth では、次の場合に動作が定義されません。
- ポップアップ ウィンドウが開かない。
- 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
});