Auth
class Auth : NSObject
Manages authentication for Firebase apps. This class is thread-safe.
-
Gets the auth object for the default Firebase app. The default Firebase app must have already been configured or an exception will be raised.
Declaration
Swift
class func auth() -> Auth
-
Gets the auth object for a
FIRApp
.Declaration
Swift
class func auth(app: FIRApp) -> Auth
Parameters
app
The FIRApp for which to retrieve the associated FIRAuth instance.
Return Value
The FIRAuth instance associated with the given FIRApp.
-
Gets the
FIRApp
object that this auth object is connected to.Declaration
Swift
weak var app: FIRApp? { get }
-
Synchronously gets the cached current user, or null if there is none.
Declaration
Swift
var currentUser: FIRUser? { get }
-
The current user language code. This property can be set to the app’s current language by calling
useAppLanguage
.The string used to set this property must be a language code that follows BCP 47.
Declaration
Swift
var languageCode: String? { get set }
-
Contains settings related to the auth object.
Declaration
Swift
@NSCopying var settings: FIRAuthSettings? { get set }
-
The APNs token used for phone number authentication. The type of the token (production or sandbox) will be attempted to be automatcially detected. If swizzling is disabled, the APNs Token must be set for phone number auth to work, by either setting this property or by calling
setAPNSToken:type:
Declaration
Swift
var apnsToken: Data? { get set }
-
Please access auth instances using
FIRAuth.auth
andFIRAuth.authForApp:
. -
Sets the currentUser on the calling Auth instance to the provided user object.
Declaration
Swift
func updateCurrentUser(_ user: FIRUser, completion: UserUpdateCallback? = nil)
Parameters
user
The user object to be set as the current user of the calling Auth instance.
completion
Optionally; a block invoked after the user of the calling Auth instance has been updated or an error was encountered.
-
Fetches the list of IdPs that can be used for signing in with the provided email address. Useful for an
identifier-first
sign-in flow.Possible error codes:
+ `FIRAuthErrorCodeInvalidEmail` - Indicates the email address is malformed.
See
FIRAuthErrors
for a list of error codes that are common to all API methods.Declaration
Swift
func fetchProviders(forEmail email: String, completion: ProviderQueryCallback? = nil)
Parameters
email
The email address for which to obtain a list of identity providers.
completion
Optionally; a block which is invoked when the list of providers for the specified email address is ready or an error was encountered. Invoked asynchronously on the main thread in the future.
-
Fetches the list of all sign-in methods previously used for the provided email address.
Possible error codes:
+ `FIRAuthErrorCodeInvalidEmail` - Indicates the email address is malformed.
See
FIRAuthErrors
for a list of error codes that are common to all API methods.Declaration
Swift
func fetchSignInMethods(forEmail email: String, completion: SignInMethodQueryCallback? = nil)
Parameters
email
The email address for which to obtain a list of sign-in methods.
completion
Optionally; a block which is invoked when the list of sign in methods for the specified email address is ready or an error was encountered. Invoked asynchronously on the main thread in the future.
-
Signs in using an email address and password.
Possible error codes:
+ `FIRAuthErrorCodeOperationNotAllowed` - Indicates that email and password accounts are not enabled. Enable them in the Auth section of the Firebase console. + `FIRAuthErrorCodeUserDisabled` - Indicates the user's account is disabled. + `FIRAuthErrorCodeWrongPassword` - Indicates the user attempted sign in with an incorrect password. + `FIRAuthErrorCodeInvalidEmail` - Indicates the email address is malformed.
See
FIRAuthErrors
for a list of error codes that are common to all API methods.Declaration
Swift
func signIn(withEmail email: String, password: String, completion: AuthDataResultCallback? = nil)
Parameters
email
The user’s email address.
password
The user’s password.
completion
Optionally; a block which is invoked when the sign in flow finishes, or is canceled. Invoked asynchronously on the main thread in the future.
-
Signs in using an email address and email sign-in link.
Possible error codes:
+ `FIRAuthErrorCodeOperationNotAllowed` - Indicates that email and email sign-in link accounts are not enabled. Enable them in the Auth section of the Firebase console. + `FIRAuthErrorCodeUserDisabled` - Indicates the user's account is disabled. + `FIRAuthErrorCodeInvalidEmail` - Indicates the email address is invalid.
See
FIRAuthErrors
for a list of error codes that are common to all API methods.Declaration
Swift
func signIn(withEmail email: String, link: String, completion: AuthDataResultCallback? = nil)
Parameters
email
The user’s email address.
link
The email sign-in link.
completion
Optionally; a block which is invoked when the sign in flow finishes, or is canceled. Invoked asynchronously on the main thread in the future.
-
Please use
signInWithEmail:password:completion:
for Objective-C orsignIn(withEmail:password:completion:)
for Swift instead.Declaration
Swift
func signInAndRetrieveData(withEmail email: String, password: String, completion: AuthDataResultCallback? = nil)
Parameters
email
The user’s email address.
password
The user’s password.
completion
Optionally; a block which is invoked when the sign in flow finishes, or is canceled. Invoked asynchronously on the main thread in the future.
-
Please use
signInAndRetrieveDataWithCredential:completion:
for Objective-C orsignInAndRetrieveData(with:completion:)
for swift insteadPossible error codes:
+ `FIRAuthErrorCodeInvalidCredential` - Indicates the supplied credential is invalid. This could happen if it has expired or it is malformed. + `FIRAuthErrorCodeOperationNotAllowed` - Indicates that accounts with the identity provider represented by the credential are not enabled. Enable them in the Auth section of the Firebase console. + `FIRAuthErrorCodeAccountExistsWithDifferentCredential` - Indicates the email asserted by the credential (e.g. the email in a Facebook access token) is already in use by an existing account, that cannot be authenticated with this sign-in method. Call fetchProvidersForEmail for this user’s email and then prompt them to sign in with any of the sign-in providers returned. This error will only be thrown if the "One account per email address" setting is enabled in the Firebase console, under Auth settings. + `FIRAuthErrorCodeUserDisabled` - Indicates the user's account is disabled. + `FIRAuthErrorCodeWrongPassword` - Indicates the user attempted sign in with an incorrect password, if credential is of the type EmailPasswordAuthCredential. + `FIRAuthErrorCodeInvalidEmail` - Indicates the email address is malformed. + `FIRAuthErrorCodeMissingVerificationID` - Indicates that the phone auth credential was created with an empty verification ID. + `FIRAuthErrorCodeMissingVerificationCode` - Indicates that the phone auth credential was created with an empty verification code. + `FIRAuthErrorCodeInvalidVerificationCode` - Indicates that the phone auth credential was created with an invalid verification Code. + `FIRAuthErrorCodeInvalidVerificationID` - Indicates that the phone auth credential was created with an invalid verification ID. + `FIRAuthErrorCodeSessionExpired` - Indicates that the SMS code has expired.
See
FIRAuthErrors
for a list of error codes that are common to all API methodsDeclaration
Swift
func signIn(with credential: FIRAuthCredential, completion: AuthResultCallback? = nil)
Parameters
credential
The credential supplied by the IdP.
completion
Optionally; a block which is invoked when the sign in flow finishes, or is canceled. Invoked asynchronously on the main thread in the future.
-
Asynchronously signs in to Firebase with the given 3rd-party credentials (e.g. a Facebook login Access Token, a Google ID Token/Access Token pair, etc.) and returns additional identity provider data.
Possible error codes:
+ `FIRAuthErrorCodeInvalidCredential` - Indicates the supplied credential is invalid. This could happen if it has expired or it is malformed. + `FIRAuthErrorCodeOperationNotAllowed` - Indicates that accounts with the identity provider represented by the credential are not enabled. Enable them in the Auth section of the Firebase console. + `FIRAuthErrorCodeAccountExistsWithDifferentCredential` - Indicates the email asserted by the credential (e.g. the email in a Facebook access token) is already in use by an existing account, that cannot be authenticated with this sign-in method. Call fetchProvidersForEmail for this user’s email and then prompt them to sign in with any of the sign-in providers returned. This error will only be thrown if the "One account per email address" setting is enabled in the Firebase console, under Auth settings. + `FIRAuthErrorCodeUserDisabled` - Indicates the user's account is disabled. + `FIRAuthErrorCodeWrongPassword` - Indicates the user attempted sign in with an incorrect password, if credential is of the type EmailPasswordAuthCredential. + `FIRAuthErrorCodeInvalidEmail` - Indicates the email address is malformed. + `FIRAuthErrorCodeMissingVerificationID` - Indicates that the phone auth credential was created with an empty verification ID. + `FIRAuthErrorCodeMissingVerificationCode` - Indicates that the phone auth credential was created with an empty verification code. + `FIRAuthErrorCodeInvalidVerificationCode` - Indicates that the phone auth credential was created with an invalid verification Code. + `FIRAuthErrorCodeInvalidVerificationID` - Indicates that the phone auth credential was created with an invalid verification ID. + `FIRAuthErrorCodeSessionExpired` - Indicates that the SMS code has expired.
See
FIRAuthErrors
for a list of error codes that are common to all API methodsDeclaration
Swift
func signInAndRetrieveData(with credential: FIRAuthCredential, completion: AuthDataResultCallback? = nil)
Parameters
credential
The credential supplied by the IdP.
completion
Optionally; a block which is invoked when the sign in flow finishes, or is canceled. Invoked asynchronously on the main thread in the future.
-
Asynchronously creates and becomes an anonymous user.
If there is already an anonymous user signed in, that user will be returned instead. If there is any other existing user signed in, that user will be signed out.
Possible error codes:
+ `FIRAuthErrorCodeOperationNotAllowed` - Indicates that anonymous accounts are not enabled. Enable them in the Auth section of the Firebase console.
See
FIRAuthErrors
for a list of error codes that are common to all API methods.Declaration
Swift
func signInAnonymously(completion: AuthDataResultCallback? = nil)
Parameters
completion
Optionally; a block which is invoked when the sign in finishes, or is canceled. Invoked asynchronously on the main thread in the future.
-
Please use sign
signInAnonymouslyWithCompletion:for Objective-C or
signInAnonymously(Completion:)` for Swift instead.Declaration
Swift
func signInAnonymouslyAndRetrieveData(completion: AuthDataResultCallback? = nil)
Parameters
completion
Optionally; a block which is invoked when the sign in finishes, or is canceled. Invoked asynchronously on the main thread in the future.
-
Asynchronously signs in to Firebase with the given Auth token.
Possible error codes:
+ `FIRAuthErrorCodeInvalidCustomToken` - Indicates a validation error with the custom token. + `FIRAuthErrorCodeCustomTokenMismatch` - Indicates the service account and the API key belong to different projects.
See
FIRAuthErrors
for a list of error codes that are common to all API methods.Declaration
Swift
func signIn(withCustomToken token: String, completion: AuthDataResultCallback? = nil)
Parameters
token
A self-signed custom auth token.
completion
Optionally; a block which is invoked when the sign in finishes, or is canceled. Invoked asynchronously on the main thread in the future.
-
Please use
signInWithCustomToken:completion:
orsignIn(withCustomToken:completion:)
for Swift instead.Declaration
Swift
func signInAndRetrieveData(withCustomToken token: String, completion: AuthDataResultCallback? = nil)
Parameters
token
A self-signed custom auth token.
completion
Optionally; a block which is invoked when the sign in finishes, or is canceled. Invoked asynchronously on the main thread in the future.
-
Creates and, on success, signs in a user with the given email address and password.
Possible error codes:
+ `FIRAuthErrorCodeInvalidEmail` - Indicates the email address is malformed. + `FIRAuthErrorCodeEmailAlreadyInUse` - Indicates the email used to attempt sign up already exists. Call fetchProvidersForEmail to check which sign-in mechanisms the user used, and prompt the user to sign in with one of those. + `FIRAuthErrorCodeOperationNotAllowed` - Indicates that email and password accounts are not enabled. Enable them in the Auth section of the Firebase console. + `FIRAuthErrorCodeWeakPassword` - Indicates an attempt to set a password that is considered too weak. The NSLocalizedFailureReasonErrorKey field in the NSError.userInfo dictionary object will contain more detailed explanation that can be shown to the user.
See
FIRAuthErrors
for a list of error codes that are common to all API methods.Declaration
Swift
func createUser(withEmail email: String, password: String, completion: AuthDataResultCallback? = nil)
Parameters
email
The user’s email address.
password
The user’s desired password.
completion
Optionally; a block which is invoked when the sign up flow finishes, or is canceled. Invoked asynchronously on the main thread in the future.
-
Please use
createUserAndRetrieveDataWithEmail:password:completion:
orcreateUser(withEmail:password:completion:)
for Swift instead.Declaration
Swift
func createUserAndRetrieveData(withEmail email: String, password: String, completion: AuthDataResultCallback? = nil)
Parameters
email
The user’s email address.
password
The user’s desired password.
completion
Optionally; a block which is invoked when the sign up flow finishes, or is canceled. Invoked asynchronously on the main thread in the future.
-
Resets the password given a code sent to the user outside of the app and a new password for the user.
Possible error codes:
+ `FIRAuthErrorCodeWeakPassword` - Indicates an attempt to set a password that is considered too weak. + `FIRAuthErrorCodeOperationNotAllowed` - Indicates the administrator disabled sign in with the specified identity provider. + `FIRAuthErrorCodeExpiredActionCode` - Indicates the OOB code is expired. + `FIRAuthErrorCodeInvalidActionCode` - Indicates the OOB code is invalid.
See
FIRAuthErrors
for a list of error codes that are common to all API methods.Declaration
Swift
func confirmPasswordReset(withCode code: String, newPassword: String, completion: @escaping ConfirmPasswordResetCallback)
Parameters
newPassword
The new password.
completion
Optionally; a block which is invoked when the request finishes. Invoked asynchronously on the main thread in the future.
-
Checks the validity of an out of band code.
Declaration
Swift
func checkActionCode(_ code: String, completion: @escaping CheckActionCodeCallback)
Parameters
code
The out of band code to check validity.
completion
Optionally; a block which is invoked when the request finishes. Invoked asynchronously on the main thread in the future.
-
Checks the validity of a verify password reset code.
Declaration
Swift
func verifyPasswordResetCode(_ code: String, completion: @escaping VerifyPasswordResetCodeCallback)
Parameters
code
The password reset code to be verified.
completion
Optionally; a block which is invoked when the request finishes. Invoked asynchronously on the main thread in the future.
-
Applies out of band code.
This method will not work for out of band codes which require an additional parameter, such as password reset code.
Declaration
Swift
func applyActionCode(_ code: String, completion: @escaping ApplyActionCodeCallback)
Parameters
code
The out of band code to be applied.
completion
Optionally; a block which is invoked when the request finishes. Invoked asynchronously on the main thread in the future.
-
Initiates a password reset for the given email address.
Possible error codes:
+ `FIRAuthErrorCodeInvalidRecipientEmail` - Indicates an invalid recipient email was sent in the request. + `FIRAuthErrorCodeInvalidSender` - Indicates an invalid sender email is set in the console for this action. + `FIRAuthErrorCodeInvalidMessagePayload` - Indicates an invalid email template for sending update email.
Declaration
Swift
func sendPasswordReset(withEmail email: String, completion: SendPasswordResetCallback? = nil)
Parameters
email
The email address of the user.
completion
Optionally; a block which is invoked when the request finishes. Invoked asynchronously on the main thread in the future.
-
Initiates a password reset for the given email address and @FIRActionCodeSettings object.
Possible error codes:
+ `FIRAuthErrorCodeInvalidRecipientEmail` - Indicates an invalid recipient email was sent in the request. + `FIRAuthErrorCodeInvalidSender` - Indicates an invalid sender email is set in the console for this action. + `FIRAuthErrorCodeInvalidMessagePayload` - Indicates an invalid email template for sending update email. + `FIRAuthErrorCodeMissingIosBundleID` - Indicates that the iOS bundle ID is missing when `handleCodeInApp` is set to YES. + `FIRAuthErrorCodeMissingAndroidPackageName` - Indicates that the android package name is missing when the `androidInstallApp` flag is set to true. + `FIRAuthErrorCodeUnauthorizedDomain` - Indicates that the domain specified in the continue URL is not whitelisted in the Firebase console. + `FIRAuthErrorCodeInvalidContinueURI` - Indicates that the domain specified in the continue URI is not valid.
Declaration
Swift
func sendPasswordReset(withEmail email: String, actionCodeSettings: FIRActionCodeSettings, completion: SendPasswordResetCallback? = nil)
Parameters
email
The email address of the user.
actionCodeSettings
An
FIRActionCodeSettings
object containing settings related to handling action codes.completion
Optionally; a block which is invoked when the request finishes. Invoked asynchronously on the main thread in the future.
-
Sends a sign in with email link to provided email address.
Declaration
Swift
func sendSignInLink(toEmail email: String, actionCodeSettings: FIRActionCodeSettings, completion: SendSignInLinkToEmailCallback? = nil)
Parameters
email
The email address of the user.
actionCodeSettings
An
FIRActionCodeSettings
object containing settings related to handling action codes.completion
Optionally; a block which is invoked when the request finishes. Invoked asynchronously on the main thread in the future.
-
Signs out the current user.
Possible error codes:
+ `FIRAuthErrorCodeKeychainError` - Indicates an error occurred when accessing the keychain. The `NSLocalizedFailureReasonErrorKey` field in the `NSError.userInfo` dictionary will contain more information about the error encountered.
Declaration
Swift
func signOut() throws
Parameters
error
Optionally; if an error occurs, upon return contains an NSError object that describes the problem; is nil otherwise.
Return Value
@YES when the sign out request was successful. @NO otherwise.
-
Checks if link is an email sign-in link.
Declaration
Swift
func isSignIn(withEmailLink link: String) -> Bool
Parameters
link
The email sign-in link.
Return Value
@YES when the link passed matches the expected format of an email sign-in link.
-
Registers a block as an
auth state did change
listener. To be invoked when:- The block is registered as a listener,
- A user with a different UID from the current user has signed in, or
The current user has signed out.
The block is invoked immediately after adding it according to it’s standard invocation semantics, asynchronously on the main thread. Users should pay special attention to making sure the block does not inadvertently retain objects which should not be retained by the long-lived block. The block itself will be retained by
FIRAuth
until it is unregistered or until theFIRAuth
instance is otherwise deallocated.Declaration
Swift
func addStateDidChangeListener(_ listener: @escaping AuthStateDidChangeListenerBlock) -> AuthStateDidChangeListenerHandle
Parameters
listener
The block to be invoked. The block is always invoked asynchronously on the main thread, even for it’s initial invocation after having been added as a listener.
Return Value
A handle useful for manually unregistering the block as a listener.
-
Unregisters a block as an
auth state did change
listener.Declaration
Swift
func removeStateDidChangeListener(_ listenerHandle: AuthStateDidChangeListenerHandle)
Parameters
listenerHandle
The handle for the listener.
-
Registers a block as an
ID token did change
listener. To be invoked when:- The block is registered as a listener,
- A user with a different UID from the current user has signed in,
- The ID token of the current user has been refreshed, or
The current user has signed out.
The block is invoked immediately after adding it according to it’s standard invocation semantics, asynchronously on the main thread. Users should pay special attention to making sure the block does not inadvertently retain objects which should not be retained by the long-lived block. The block itself will be retained by
FIRAuth
until it is unregistered or until theFIRAuth
instance is otherwise deallocated.Declaration
Swift
func addIDTokenDidChangeListener(_ listener: @escaping IDTokenDidChangeListenerBlock) -> IDTokenDidChangeListenerHandle
Parameters
listener
The block to be invoked. The block is always invoked asynchronously on the main thread, even for it’s initial invocation after having been added as a listener.
Return Value
A handle useful for manually unregistering the block as a listener.
-
Unregisters a block as an
ID token did change
listener.Declaration
Swift
func removeIDTokenDidChangeListener(_ listenerHandle: IDTokenDidChangeListenerHandle)
Parameters
listenerHandle
The handle for the listener.
-
Sets
languageCode
to the app’s current language.Declaration
Swift
func useAppLanguage()
-
Whether the specific URL is handled by
FIRAuth
.Declaration
Swift
func canHandle(_ URL: URL) -> Bool
Parameters
URL
The URL received by the application delegate from any of the openURL method.
Return Value
Whether or the URL is handled. YES means the URL is for Firebase Auth so the caller should ignore the URL from further processing, and NO means the the URL is for the app (or another libaray) so the caller should continue handling this URL as usual. If swizzling is disabled, URLs received by the application delegate must be forwarded to this method for phone number auth to work.
-
Sets the APNs token along with its type. If swizzling is disabled, the APNs Token must be set for phone number auth to work, by either setting calling this method or by setting the
APNSToken
property.Declaration
Swift
func setAPNSToken(_ token: Data, type: AuthAPNSTokenType)
-
Whether the specific remote notification is handled by
FIRAuth
.Declaration
Swift
func canHandleNotification(_ userInfo: [AnyHashable : Any]) -> Bool
Parameters
userInfo
A dictionary that contains information related to the notification in question.
Return Value
Whether or the notification is handled. YES means the notification is for Firebase Auth so the caller should ignore the notification from further processing, and NO means the the notification is for the app (or another libaray) so the caller should continue handling this notification as usual. If swizzling is disabled, related remote notifications must be forwarded to this method for phone number auth to work.