エラーはさまざまなレイヤで発生する可能性があります。通知の受信方法は、エラーがどこで発生したかによって異なります。
必要な 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、スコープ識別子、レスポンス タイプの値など、無効な値を 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
});