Firebase iOS Auth エラーを処理する

Authentication メソッドに対する完了コールバックが nil 以外の NSError 引数を受信した場合は、エラーが発生しています。本番環境のコードの適切なエラー処理ロジックにディスパッチするには、次に示す、一般的なエラーとメソッド別のエラーに対するエラーコードをご確認ください。

エラーの中には、特定のユーザー操作によって解決できるものがあります。たとえば、FIRAuthErrorCodeUserTokenExpired はユーザーが再度ログインすることで解決でき、FIRAuthErrorCodeWrongPassword はユーザーに正しいパスワードを入力してもらうことで解決できます。

FIRAuthErrorCodeNetworkErrorFIRAuthErrorCodeTooManyRequests の場合を除き、失敗した操作を同じ引数で再試行しても成功することはありません。サーバー側で操作が行われたかどうかは仮定しないでください。

エラーを調べたり、ログに記録したりする場合は、userInfo 辞書をご確認ください。 FIRAuthErrorNameKey には、エラーを識別するために使用できる、プラットフォーム間で共通のエラー名の文字列が含まれています。 NSLocalizedDescriptionKey にはエラーの説明が含まれます。この説明はデベロッパー向けのもので、ユーザー向けではありません。 NSUnderlyingErrorKey には、発生したエラーの原因となったエラーが含まれます(原因となったエラーが存在する場合)。

上記の主要項目に加えて、userInfo 辞書には、エラーの診断に役立つ他の項目が含まれる場合もあります。

すべての API メソッドに共通のエラーコード

コード 意味
FIRAuthErrorCodeNetworkError 操作中にネットワーク エラーが発生したことを示します。
FIRAuthErrorCodeUserNotFound ユーザー アカウントが見つからなかったことを示します。このエラーは、ユーザー アカウントが削除されている場合に発生することがあります。
FIRAuthErrorCodeUserTokenExpired 現在ログインしているユーザーのトークンが期限切れになったことを示します。たとえば、ユーザーが別の端末でアカウントのパスワードを変更した場合などです。ユーザーにこの端末で再度ログインするように求める必要があります。
FIRAuthErrorCodeTooManyRequests 呼び出し元の端末から Firebase Authentication サーバーに異常な数のリクエストが行われた後で、リクエストがブロックされたことを示します。しばらくしてからもう一度お試しください。
FIRAuthErrorCodeInvalidAPIKey アプリに無効な API キーが設定されていることを示します。
FIRAuthErrorCodeAppNotAuthorized アプリが、提供された API キーによる Firebase Authentication の使用を承認されていないことを示します。Google API Console にアクセスし、[認証情報] タブで、使用している API キーのホワイトリストにアプリのバンドル ID が登録されていることをご確認ください。
FIRAuthErrorCodeKeychainError キーチェーンへのアクセス時にエラーが発生したことを示します。NSError.userInfo 辞書の NSLocalizedFailureReasonErrorKey 項目と NSUnderlyingErrorKey 項目に、発生したエラーの詳細が含まれています。
FIRAuthErrorCodeInternalError 内部エラーが発生したことを示します。NSError オブジェクト全体とともにエラーを報告してください。

メソッド別のエラーコード

FIRAuth

fetchProvidersForEmail:completion:

コード 意味
FIRAuthErrorCodeInvalidEmail メールアドレスの形式が正しくないことを示します。

signInWithEmail:password:completion:

コード 意味
FIRAuthErrorCodeOperationNotAllowed メールとパスワードを使用するアカウントが有効になっていないことを示します。Firebase console の [Auth] で有効にしてください。
FIRAuthErrorCodeInvalidEmail メールアドレスの形式が正しくないことを示します。
FIRAuthErrorCodeUserDisabled ユーザーのアカウントが無効になっていることを示します。
FIRAuthErrorCodeWrongPassword ユーザーが間違ったパスワードでログインしようとしたことを示します。

signInWithCredential:completion:

コード 意味
FIRAuthErrorCodeInvalidCredential 提供された認証情報が無効であることを示します。このエラーは、認証情報の有効期限が切れていたり、形式が正しくない場合に発生することがあります。
FIRAuthErrorCodeInvalidEmail 認証情報のタイプが EmailPasswordAuthCredential の場合に、メールアドレスが不正であることを示します。
FIRAuthErrorCodeOperationNotAllowed 認証情報が表す ID プロバイダを使用するアカウントが有効になっていないことを示します。Firebase console の [Auth] で有効にしてください。
FIRAuthErrorCodeEmailAlreadyInUse 認証情報が表すメール(Facebook アクセス トークンに含まれるメールなど)が既存のアカウントで既に使用されており、このログイン方法では認証できないことを示します。このユーザーのメールに対して fetchProvidersForEmail を呼び出し、返されるいずれかのログイン プロバイダを使用してログインするようユーザーに求めてください。このエラーは、Firebase console の [Authentication] 設定で [1 つのメールアドレスにつき 1 つのアカウント] が有効になっている場合にのみスローされます。
FIRAuthErrorCodeUserDisabled ユーザーのアカウントが無効になっていることを示します。
FIRAuthErrorCodeWrongPassword 認証情報のタイプが EmailPasswordAuthCredential の場合に、ユーザーが間違ったパスワードでログインしようとしたことを示します。

signInAnonymouslyWithCompletion:

コード 意味
FIRAuthErrorCodeOperationNotAllowed 匿名アカウントが有効になっていないことを示します。Firebase console の [Auth] で有効にしてください。

signInWithCustomToken:completion:

コード 意味
FIRAuthErrorCodeInvalidCustomToken カスタム トークンに検証エラーがあることを示します。
FIRAuthErrorCodeCustomTokenMismatch サービス アカウントと API キーが、異なるプロジェクトに属していることを示します。

createUserWithEmail:password:completion:

コード 意味
FIRAuthErrorCodeInvalidEmail メールアドレスの形式が正しくないことを示します。
FIRAuthErrorCodeEmailAlreadyInUse 登録に使用されたメールが既に存在することを示します。fetchProvidersForEmail を呼び出してそのユーザーが使用したログイン方法を確認し、そのいずれかの方法を使用してログインするようユーザーに求めてください。
FIRAuthErrorCodeOperationNotAllowed メールとパスワードを使用するアカウントが有効になっていないことを示します。Firebase console の [Authentication] セクションで有効にしてください。
FIRAuthErrorCodeWeakPassword 設定しようとしたパスワードが弱すぎると判断されたことを示します。NSError.userInfo 辞書の NSLocalizedFailureReasonErrorKey 項目に、ユーザーに表示できる詳細な説明が含まれています。

signOut:

コード 意味
FIRAuthErrorCodeKeychainError キーチェーンへのアクセス時にエラーが発生したことを示します。NSError.userInfo 辞書の NSLocalizedFailureReasonErrorKey 項目と NSUnderlyingErrorKey 項目に、発生したエラーの詳細が含まれています。

FIRUser

FIRUser 操作に共通のエラー

コード 意味
FIRAuthErrorCodeInvalidUserToken セッション情報が保持されている、ログイン済みユーザーのリフレッシュ トークンが無効であることを示します。ユーザーにこの端末で再度ログインするように求める必要があります。
FIRAuthErrorCodeUserDisabled ユーザーのアカウントが無効になっており、Firebase console の [ユーザー] パネル内で再度有効にされるまで使用できないことを示します。

reauthenticateWithCredential:completion:

コード 意味
FIRAuthErrorCodeInvalidCredential 提供された認証情報が無効であることを示します。このエラーは、認証情報の有効期限が切れていたり、形式が正しくない場合に発生することがあります。
FIRAuthErrorCodeInvalidEmail 認証情報のタイプが EmailPasswordAuthCredential の場合に、メールアドレスが不正であることを示します。
FIRAuthErrorCodeWrongPassword 認証情報のタイプが EmailPasswordAuthCredential の場合に、ユーザーが間違ったパスワードで再認証しようとしたことを示します。
FIRAuthErrorCodeUserMismatch 現在ログインしているユーザーではないユーザーで再認証が試みられたことを示します。
FIRAuthErrorCodeOperationNotAllowed 認証情報が表す ID プロバイダを使用するアカウントが有効になっていないことを示します。Firebase console の [Auth] で有効にしてください。
FIRAuthErrorCodeEmailAlreadyInUse 認証情報が表すメール(Facebook アクセス トークンに含まれるメールなど)が既存のアカウントで既に使用されており、このログイン方法では再認証できないことを示します。このユーザーのメールに対して fetchProvidersForEmail を呼び出し、返されるいずれかのログイン プロバイダを使用してログインするようユーザーに求めてください。このエラーは、Firebase console の [Authentication] 設定で [1 つのメールアドレスにつき 1 つのアカウント] が有効になっている場合にのみスローされます。
FIRAuthErrorCodeUserDisabled ユーザーのアカウントが無効になっていることを示します。

updateEmail:completion:

コード 意味
FIRAuthErrorCodeEmailAlreadyInUse メールが別のアカウントで既に使用されていることを示します。
FIRAuthErrorCodeInvalidEmail メールアドレスの形式が正しくないことを示します。
FIRAuthErrorCodeRequiresRecentLogin ユーザーのメールの更新はセキュリティ上重要な操作で、ユーザーが最近ログインしている必要があります。このエラーは、ユーザーがログインした時期が古いことを示しています。解決するには、FIRUserreauthenticateWithCredential:completion: を呼び出して、ユーザーを再認証してください。

updatePassword:completion:

コード 意味
FIRAuthErrorCodeOperationNotAllowed 指定された ID プロバイダによるログインを管理者が無効にしたことを示します。
FIRAuthErrorCodeRequiresRecentLogin ユーザーのパスワードの更新はセキュリティ上重要な操作で、ユーザーが最近ログインしている必要があります。このエラーは、ユーザーがログインした時期が古いことを示しています。解決するには、FIRUserreauthenticateWithCredential:completion: を呼び出して、ユーザーを再認証してください。
FIRAuthErrorCodeWeakPassword 設定しようとしたパスワードが弱すぎると判断されたことを示します。NSError.userInfo 辞書の NSLocalizedFailureReasonErrorKey 項目に、ユーザーに表示できる詳細な説明が含まれています。

linkWithCredential:completion:

コード 意味
FIRAuthErrorCodeProviderAlreadyLinked このアカウントに既にリンクされているタイプのプロバイダをリンクしようとしたことを示します。
FIRAuthErrorCodeCredentialAlreadyInUse 別の Firebase アカウントに既にリンクされている認証情報にリンクしようとしたことを示します。
FIRAuthErrorCodeOperationNotAllowed 認証情報が表す ID プロバイダを使用するアカウントが有効になっていないことを示します。Firebase console の [Auth] で有効にしてください。

このメソッドでは、FIRUserupdateEmail:completion:updatePassword:completion: に関連付けられているエラーコードが返されることもあります。

unlinkFromProvider:completion:

コード 意味
FIRAuthErrorCodeNoSuchProvider アカウントにリンクされていないプロバイダのリンクを解除しようとしたことを示します。
FIRAuthErrorCodeRequiresRecentLogin メールの更新はセキュリティ上重要な操作で、ユーザーが最近ログインしている必要があります。このエラーは、ユーザーがログインした時期が古いことを示しています。解決するには、FIRUserreauthenticateWithCredential:completion: を呼び出して、ユーザーを再認証してください。

sendEmailVerificationWithCompletion:

コード 意味
FIRAuthErrorCodeUserNotFound ユーザー アカウントが見つからなかったことを示します。

deleteWithCompletion:

コード 意味
FIRAuthErrorCodeRequiresRecentLogin メールの更新はセキュリティ上重要な操作で、ユーザーが最近ログインしている必要があります。このエラーは、ユーザーがログインした時期が古いことを示しています。解決するには、FIRUserreauthenticateWithCredential:completion: を呼び出して、ユーザーを再認証してください。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。