Firebase Apple プラットフォームの 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 コンソールの [Authentication] で有効にしてください。
FIRAuthErrorCodeInvalidEmail メールアドレスの形式が正しくないことを示します。
FIRAuthErrorCodeUserDisabled ユーザーのアカウントが無効になっていることを示します。
FIRAuthErrorCodeWrongPassword ユーザーが間違ったパスワードでログインしようとしたことを示します。

signInWithCredential:completion:

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

signInAnonymouslyWithCompletion:

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

signInWithCustomToken:completion:

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

createUserWithEmail:password:completion:

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

signOut:

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

FIRUser

FIRUser オペレーションに共通のエラー

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

reauthenticateWithCredential:completion:

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

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

unlinkFromProvider:completion:

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

sendEmailVerificationWithCompletion:

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

deleteWithCompletion:

コード 意味
FIRAuthErrorCodeRequiresRecentLogin ユーザー アカウントの削除はセキュリティ上重要なオペレーションで、ユーザーが最近ログインしている必要があります。このエラーは、ユーザーがログインした時期が古いことを示しています。解決するには、FIRUserreauthenticateWithCredential:completion: を呼び出して、ユーザーを再認証してください。