Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
@capacitor-firebase/authentication
Advanced tools
Unofficial Capacitor plugin for Firebase Authentication.1
npm install @capacitor-firebase/authentication firebase
npx cap sync
Add Firebase to your project if you haven't already (Android / iOS / Web).
On iOS, verify that this function is included in your app's AppDelegate.swift
:
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool {
return ApplicationDelegateProxy.shared.application(app, open: url, options: options)
}
Attention: If you use this plugin on iOS in combination with @capacitor-firebase/messaging
, then add the following to your app's AppDelegate.swift
:
+ import FirebaseAuth
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
+ if Auth.auth().canHandle(url) {
+ return true
+ }
return ApplicationDelegateProxy.shared.application(app, open: url, options: options)
}
The further installation steps depend on the selected authentication method:
Attention: Please note that this plugin uses third-party SDKs to offer native sign-in. These SDKs can initialize on their own and collect various data. For more information, see Third-Party SDKs.
These configuration values are available:
Prop | Type | Description | Default | Since |
---|---|---|---|---|
skipNativeAuth | boolean | Configure whether the plugin should skip the native authentication. Only needed if you want to use the Firebase JavaScript SDK. This configuration option has no effect on Firebase account linking. Note that the plugin may behave differently across the platforms. Only available for Android and iOS. | false | 0.1.0 |
providers | string[] | Configure the providers that should be loaded by the plugin. Possible values: ["apple.com", "facebook.com", "gc.apple.com", "github.com", "google.com", "microsoft.com", "playgames.google.com", "twitter.com", "yahoo.com", "phone"] Only available for Android and iOS. | [] | 0.1.0 |
In capacitor.config.json
:
{
"plugins": {
"FirebaseAuthentication": {
"skipNativeAuth": false,
"providers": ["apple.com", "facebook.com"]
}
}
}
In capacitor.config.ts
:
/// <reference types="@capacitor-firebase/authentication" />
import { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
plugins: {
FirebaseAuthentication: {
skipNativeAuth: false,
providers: ["apple.com", "facebook.com"],
},
},
};
export default config;
Here you can find information on how to use the plugin with the Firebase JS SDK.
A working example can be found here: robingenz/capacitor-firebase-authentication-demo
The following starter templates are available:
import { FirebaseAuthentication } from '@capacitor-firebase/authentication';
const applyActionCode = async () => {
await FirebaseAuthentication.applyActionCode({ oobCode: '1234' });
};
const createUserWithEmailAndPassword = async () => {
const result = await FirebaseAuthentication.createUserWithEmailAndPassword({
email: 'mail@exmaple.com',
password: '1234',
});
return result.user;
};
const confirmPasswordReset = async () => {
await FirebaseAuthentication.confirmPasswordReset({
oobCode: '1234',
newPassword: '4321',
});
};
const deleteUser = async () => {
await FirebaseAuthentication.deleteUser();
};
const fetchSignInMethodsForEmail = async () => {
const result = await FirebaseAuthentication.fetchSignInMethodsForEmail({
email: 'mail@example.tld',
});
return result.signInMethods;
};
const getCurrentUser = async () => {
const result = await FirebaseAuthentication.getCurrentUser();
return result.user;
};
const getPendingAuthResult = async () => {
const result = await FirebaseAuthentication.getPendingAuthResult();
return result.user;
};
const getIdToken = async () => {
const currentUser = await getCurrentUser();
if (!currentUser) {
return;
}
const result = await FirebaseAuthentication.getIdToken();
return result.token;
};
const getPendingAuthResult = async () => {
const result = await FirebaseAuthentication.getPendingAuthResult();
return result.user;
};
const sendEmailVerification = async () => {
const currentUser = await getCurrentUser();
if (!currentUser) {
return;
}
await FirebaseAuthentication.sendEmailVerification();
};
const sendPasswordResetEmail = async () => {
await FirebaseAuthentication.sendPasswordResetEmail({
email: 'mail@example.com',
});
};
const sendSignInLinkToEmail = async () => {
const email = 'mail@example.com';
await FirebaseAuthentication.sendSignInLinkToEmail({
email,
actionCodeSettings: {
// URL you want to redirect back to. The domain (www.example.com) for this
// URL must be in the authorized domains list in the Firebase Console.
url: 'https://www.example.com/finishSignUp?cartId=1234',
// This must be true.
handleCodeInApp: true,
iOS: {
bundleId: 'com.example.ios',
},
android: {
packageName: 'com.example.android',
installApp: true,
minimumVersion: '12',
},
dynamicLinkDomain: 'example.page.link',
},
});
// The link was successfully sent. Inform the user.
// Save the email locally so you don't need to ask the user for it again
// if they open the link on the same device.
window.localStorage.setItem('emailForSignIn', email);
};
const setLanguageCode = async () => {
await FirebaseAuthentication.setLanguageCode({ languageCode: 'en-US' });
};
const signInAnonymously = async () => {
const result = await FirebaseAuthentication.signInAnonymously();
return result.user;
};
const signInWithApple = async () => {
const result = await FirebaseAuthentication.signInWithApple();
return result.user;
};
const signInWithCustomToken = async () => {
const result = await FirebaseAuthentication.signInWithCustomToken({
token: '1234',
});
return result.user;
};
const signInWithEmailAndPassword = async () => {
const result = await FirebaseAuthentication.signInWithEmailAndPassword({
email: 'mail@example.com',
password: '1234',
});
return result.user;
};
const signInWithEmailLink = async () => {
// Get the email if available. This should be available if the user completes
// the flow on the same device where they started it.
const emailLink = window.location.href;
// Confirm the link is a sign-in with email link.
const { isSignInWithEmailLink } =
await FirebaseAuthentication.isSignInWithEmailLink({
emailLink,
});
if (!isSignInWithEmailLink) {
return;
}
let email = window.localStorage.getItem('emailForSignIn');
if (!email) {
// User opened the link on a different device. To prevent session fixation
// attacks, ask the user to provide the associated email again.
email = window.prompt('Please provide your email for confirmation.');
}
// The client SDK will parse the code from the link for you.
const result = await FirebaseAuthentication.signInWithEmailLink({
email,
emailLink,
});
// Clear email from storage.
window.localStorage.removeItem('emailForSignIn');
return result.user;
};
const signInWithFacebook = async () => {
const result = await FirebaseAuthentication.signInWithFacebook();
return result.user;
};
const signInWithGameCenter = async () => {
const result = await FirebaseAuthentication.signInWithGameCenter();
return result.user;
};
const signInWithGithub = async () => {
const result = await FirebaseAuthentication.signInWithGithub();
return result.user;
};
const signInWithGoogle = async () => {
const result = await FirebaseAuthentication.signInWithGoogle();
return result.user;
};
const signInWithMicrosoft = async () => {
const result = await FirebaseAuthentication.signInWithMicrosoft();
return result.user;
};
const signInWithOpenIdConnect = async () => {
const result = await FirebaseAuthentication.signInWithOpenIdConnect({
providerId: 'oidc.example.com',
});
return result.user;
};
const signInWithPlayGames = async () => {
const result = await FirebaseAuthentication.signInWithPlayGames();
return result.user;
};
const signInWithPhoneNumber = async () => {
return new Promise(async resolve => {
// Attach `phoneCodeSent` listener to be notified as soon as the SMS is sent
await FirebaseAuthentication.addListener('phoneCodeSent', async event => {
// Ask the user for the SMS code
const verificationCode = window.prompt(
'Please enter the verification code that was sent to your mobile device.',
);
// Confirm the verification code
const result = await FirebaseAuthentication.confirmVerificationCode({
verificationId: event.verificationId,
verificationCode,
});
resolve(result.user);
});
// Attach `phoneVerificationCompleted` listener to be notified if phone verification could be finished automatically
await FirebaseAuthentication.addListener(
'phoneVerificationCompleted',
async event => {
resolve(event.result.user);
},
);
// Start sign in with phone number and send the SMS
await FirebaseAuthentication.signInWithPhoneNumber({
phoneNumber: '123456789',
});
});
};
const signInWithTwitter = async () => {
const result = await FirebaseAuthentication.signInWithTwitter();
return result.user;
};
const signInWithYahoo = async () => {
const result = await FirebaseAuthentication.signInWithYahoo();
return result.user;
};
const signOut = async () => {
await FirebaseAuthentication.signOut();
};
const updateEmail = async () => {
const currentUser = await getCurrentUser();
if (!currentUser) {
return;
}
await FirebaseAuthentication.updateEmail({
newEmail: 'new.mail@example.com',
});
};
const updatePassword = async () => {
const currentUser = await getCurrentUser();
if (!currentUser) {
return;
}
await FirebaseAuthentication.updatePassword({
newPassword: '4321',
});
};
const useAppLanguage = async () => {
await FirebaseAuthentication.useAppLanguage();
};
const useEmulator = async () => {
await FirebaseAuthentication.useEmulator({
host: '10.0.2.2',
port: 9099,
});
};
applyActionCode(...)
confirmPasswordReset(...)
confirmVerificationCode(...)
createUserWithEmailAndPassword(...)
deleteUser()
fetchSignInMethodsForEmail(...)
getCurrentUser()
getPendingAuthResult()
getIdToken(...)
getRedirectResult()
getTenantId()
isSignInWithEmailLink(...)
linkWithApple(...)
linkWithEmailAndPassword(...)
linkWithEmailLink(...)
linkWithFacebook(...)
linkWithGameCenter(...)
linkWithGithub(...)
linkWithGoogle(...)
linkWithMicrosoft(...)
linkWithOpenIdConnect(...)
linkWithPhoneNumber(...)
linkWithPlayGames(...)
linkWithTwitter(...)
linkWithYahoo(...)
reload()
revokeAccessToken(...)
sendEmailVerification(...)
sendPasswordResetEmail(...)
sendSignInLinkToEmail(...)
setLanguageCode(...)
setPersistence(...)
setTenantId(...)
signInAnonymously()
signInWithApple(...)
signInWithCustomToken(...)
signInWithEmailAndPassword(...)
signInWithEmailLink(...)
signInWithFacebook(...)
signInWithGameCenter(...)
signInWithGithub(...)
signInWithGoogle(...)
signInWithMicrosoft(...)
signInWithOpenIdConnect(...)
signInWithPhoneNumber(...)
signInWithPlayGames(...)
signInWithTwitter(...)
signInWithYahoo(...)
signOut()
unlink(...)
updateEmail(...)
updatePassword(...)
updateProfile(...)
useAppLanguage()
useEmulator(...)
addListener('authStateChange', ...)
addListener('phoneVerificationCompleted', ...)
addListener('phoneVerificationFailed', ...)
addListener('phoneCodeSent', ...)
removeAllListeners()
applyActionCode(options: ApplyActionCodeOptions) => Promise<void>
Applies a verification code sent to the user by email.
Param | Type |
---|---|
options | ApplyActionCodeOptions |
Since: 0.2.2
confirmPasswordReset(options: ConfirmPasswordResetOptions) => Promise<void>
Completes the password reset process.
Param | Type |
---|---|
options | ConfirmPasswordResetOptions |
Since: 0.2.2
confirmVerificationCode(options: ConfirmVerificationCodeOptions) => Promise<SignInResult>
Finishes the phone number verification process.
Param | Type |
---|---|
options | ConfirmVerificationCodeOptions |
Returns: Promise<SignInResult>
Since: 5.0.0
createUserWithEmailAndPassword(options: CreateUserWithEmailAndPasswordOptions) => Promise<SignInResult>
Creates a new user account with email and password. If the new account was created, the user is signed in automatically.
Param | Type |
---|---|
options | CreateUserWithEmailAndPasswordOptions |
Returns: Promise<SignInResult>
Since: 0.2.2
deleteUser() => Promise<void>
Deletes and signs out the user.
Since: 1.3.0
fetchSignInMethodsForEmail(options: FetchSignInMethodsForEmailOptions) => Promise<FetchSignInMethodsForEmailResult>
Fetches the sign-in methods for an email address.
Param | Type |
---|---|
options | FetchSignInMethodsForEmailOptions |
Returns: Promise<FetchSignInMethodsForEmailResult>
Since: 6.0.0
getCurrentUser() => Promise<GetCurrentUserResult>
Fetches the currently signed-in user.
Returns: Promise<GetCurrentUserResult>
Since: 0.1.0
getPendingAuthResult() => Promise<SignInResult>
Returns the SignInResult
if your app launched a web sign-in flow and the OS cleans up the app while in the background.
Only available for Android.
Returns: Promise<SignInResult>
Since: 6.0.0
getIdToken(options?: GetIdTokenOptions | undefined) => Promise<GetIdTokenResult>
Fetches the Firebase Auth ID Token for the currently signed-in user.
Param | Type |
---|---|
options | GetIdTokenOptions |
Returns: Promise<GetIdTokenResult>
Since: 0.1.0
getRedirectResult() => Promise<SignInResult>
Returns the SignInResult
from the redirect-based sign-in flow.
If sign-in was unsuccessful, fails with an error.
If no redirect operation was called, returns a SignInResult
with a null user.
Only available for Web.
Returns: Promise<SignInResult>
Since: 1.3.0
getTenantId() => Promise<GetTenantIdResult>
Get the tenant id.
Returns: Promise<GetTenantIdResult>
Since: 1.1.0
isSignInWithEmailLink(options: IsSignInWithEmailLinkOptions) => Promise<IsSignInWithEmailLinkResult>
Checks if an incoming link is a sign-in with email link suitable for signInWithEmailLink
.
Param | Type |
---|---|
options | IsSignInWithEmailLinkOptions |
Returns: Promise<IsSignInWithEmailLinkResult>
Since: 1.1.0
linkWithApple(options?: SignInWithOAuthOptions | undefined) => Promise<LinkResult>
Links the user account with Apple authentication provider.
The user must be logged in on the native layer.
The skipNativeAuth
configuration option has no effect here.
Param | Type |
---|---|
options | SignInWithOAuthOptions |
Returns: Promise<SignInResult>
Since: 1.1.0
linkWithEmailAndPassword(options: LinkWithEmailAndPasswordOptions) => Promise<LinkResult>
Links the user account with Email authentication provider.
The user must be logged in on the native layer.
The skipNativeAuth
configuration option has no effect here.
Param | Type |
---|---|
options | LinkWithEmailAndPasswordOptions |
Returns: Promise<SignInResult>
Since: 1.1.0
linkWithEmailLink(options: LinkWithEmailLinkOptions) => Promise<LinkResult>
Links the user account with Email authentication provider.
The user must be logged in on the native layer.
The skipNativeAuth
configuration option has no effect here.
Param | Type |
---|---|
options | LinkWithEmailLinkOptions |
Returns: Promise<SignInResult>
Since: 1.1.0
linkWithFacebook(options?: SignInWithOAuthOptions | undefined) => Promise<LinkResult>
Links the user account with Facebook authentication provider.
The user must be logged in on the native layer.
The skipNativeAuth
configuration option has no effect here.
Param | Type |
---|---|
options | SignInWithOAuthOptions |
Returns: Promise<SignInResult>
Since: 1.1.0
linkWithGameCenter(options?: SignInWithOAuthOptions | undefined) => Promise<LinkResult>
Links the user account with Game Center authentication provider.
The user must be logged in on the native layer.
The skipNativeAuth
configuration option has no effect here.
Only available for iOS.
Param | Type |
---|---|
options | SignInWithOAuthOptions |
Returns: Promise<SignInResult>
Since: 1.3.0
linkWithGithub(options?: SignInWithOAuthOptions | undefined) => Promise<LinkResult>
Links the user account with GitHub authentication provider.
The user must be logged in on the native layer.
The skipNativeAuth
configuration option has no effect here.
Param | Type |
---|---|
options | SignInWithOAuthOptions |
Returns: Promise<SignInResult>
Since: 1.1.0
linkWithGoogle(options?: SignInWithOAuthOptions | undefined) => Promise<LinkResult>
Links the user account with Google authentication provider.
The user must be logged in on the native layer.
The skipNativeAuth
configuration option has no effect here.
Param | Type |
---|---|
options | SignInWithOAuthOptions |
Returns: Promise<SignInResult>
Since: 1.1.0
linkWithMicrosoft(options?: SignInWithOAuthOptions | undefined) => Promise<LinkResult>
Links the user account with Microsoft authentication provider.
The user must be logged in on the native layer.
The skipNativeAuth
configuration option has no effect here.
Param | Type |
---|---|
options | SignInWithOAuthOptions |
Returns: Promise<SignInResult>
Since: 1.1.0
linkWithOpenIdConnect(options: LinkWithOpenIdConnectOptions) => Promise<LinkResult>
Links the user account with an OpenID Connect provider.
Param | Type |
---|---|
options | SignInWithOpenIdConnectOptions |
Returns: Promise<SignInResult>
Since: 6.1.0
linkWithPhoneNumber(options: LinkWithPhoneNumberOptions) => Promise<void>
Links the user account with Phone Number authentication provider.
The user must be logged in on the native layer.
The skipNativeAuth
configuration option has no effect here.
Use the phoneVerificationCompleted
listener to be notified when the verification is completed.
Use the phoneVerificationFailed
listener to be notified when the verification is failed.
Use the phoneCodeSent
listener to get the verification id.
Param | Type |
---|---|
options | SignInWithPhoneNumberOptions |
Since: 1.1.0
linkWithPlayGames(options?: SignInWithOAuthOptions | undefined) => Promise<LinkResult>
Links the user account with Play Games authentication provider.
The user must be logged in on the native layer.
The skipNativeAuth
configuration option has no effect here.
Only available for Android.
Param | Type |
---|---|
options | SignInWithOAuthOptions |
Returns: Promise<SignInResult>
Since: 1.1.0
linkWithTwitter(options?: SignInWithOAuthOptions | undefined) => Promise<LinkResult>
Links the user account with Twitter authentication provider.
The user must be logged in on the native layer.
The skipNativeAuth
configuration option has no effect here.
Param | Type |
---|---|
options | SignInWithOAuthOptions |
Returns: Promise<SignInResult>
Since: 1.1.0
linkWithYahoo(options?: SignInWithOAuthOptions | undefined) => Promise<LinkResult>
Links the user account with Yahoo authentication provider.
The user must be logged in on the native layer.
The skipNativeAuth
configuration option has no effect here.
Param | Type |
---|---|
options | SignInWithOAuthOptions |
Returns: Promise<SignInResult>
Since: 1.1.0
reload() => Promise<void>
Reloads user account data, if signed in.
Since: 1.3.0
revokeAccessToken(options: RevokeAccessTokenOptions) => Promise<void>
Revokes the given access token. Currently only supports Apple OAuth access tokens.
Param | Type |
---|---|
options | RevokeAccessTokenOptions |
Since: 6.1.0
sendEmailVerification(options?: SendEmailVerificationOptions | undefined) => Promise<void>
Sends a verification email to the currently signed in user.
Param | Type |
---|---|
options | SendEmailVerificationOptions |
Since: 0.2.2
sendPasswordResetEmail(options: SendPasswordResetEmailOptions) => Promise<void>
Sends a password reset email.
Param | Type |
---|---|
options | SendPasswordResetEmailOptions |
Since: 0.2.2
sendSignInLinkToEmail(options: SendSignInLinkToEmailOptions) => Promise<void>
Sends a sign-in email link to the user with the specified email.
To complete sign in with the email link, call signInWithEmailLink
with the email address and the email link supplied in the email sent to the user.
Param | Type |
---|---|
options | SendSignInLinkToEmailOptions |
Since: 1.1.0
setLanguageCode(options: SetLanguageCodeOptions) => Promise<void>
Sets the user-facing language code for auth operations.
Param | Type |
---|---|
options | SetLanguageCodeOptions |
Since: 0.1.0
setPersistence(options: SetPersistenceOptions) => Promise<void>
Sets the type of persistence for the currently saved auth session.
Only available for Web.
Param | Type |
---|---|
options | SetPersistenceOptions |
Since: 5.2.0
setTenantId(options: SetTenantIdOptions) => Promise<void>
Sets the tenant id.
Param | Type |
---|---|
options | SetTenantIdOptions |
Since: 1.1.0
signInAnonymously() => Promise<SignInResult>
Signs in as an anonymous user.
Returns: Promise<SignInResult>
Since: 1.1.0
signInWithApple(options?: SignInWithOAuthOptions | undefined) => Promise<SignInResult>
Starts the Apple sign-in flow.
Param | Type |
---|---|
options | SignInWithOAuthOptions |
Returns: Promise<SignInResult>
Since: 0.1.0
signInWithCustomToken(options: SignInWithCustomTokenOptions) => Promise<SignInResult>
Starts the Custom Token sign-in flow.
This method cannot be used in combination with skipNativeAuth
on Android and iOS.
In this case you have to use the signInWithCustomToken
interface of the Firebase JS SDK directly.
Param | Type |
---|---|
options | SignInWithCustomTokenOptions |
Returns: Promise<SignInResult>
Since: 0.1.0
signInWithEmailAndPassword(options: SignInWithEmailAndPasswordOptions) => Promise<SignInResult>
Starts the sign-in flow using an email and password.
Param | Type |
---|---|
options | SignInWithEmailAndPasswordOptions |
Returns: Promise<SignInResult>
Since: 0.2.2
signInWithEmailLink(options: SignInWithEmailLinkOptions) => Promise<SignInResult>
Signs in using an email and sign-in email link.
Param | Type |
---|---|
options | SignInWithEmailLinkOptions |
Returns: Promise<SignInResult>
Since: 1.1.0
signInWithFacebook(options?: SignInWithOAuthOptions | undefined) => Promise<SignInResult>
Starts the Facebook sign-in flow.
Param | Type |
---|---|
options | SignInWithOAuthOptions |
Returns: Promise<SignInResult>
Since: 0.1.0
signInWithGameCenter(options?: SignInWithOAuthOptions | SignInOptions | undefined) => Promise<SignInResult>
Starts the Game Center sign-in flow.
Only available for iOS.
Param | Type |
---|---|
options | SignInWithOAuthOptions | SignInOptions |
Returns: Promise<SignInResult>
Since: 1.3.0
signInWithGithub(options?: SignInWithOAuthOptions | undefined) => Promise<SignInResult>
Starts the GitHub sign-in flow.
Param | Type |
---|---|
options | SignInWithOAuthOptions |
Returns: Promise<SignInResult>
Since: 0.1.0
signInWithGoogle(options?: SignInWithOAuthOptions | undefined) => Promise<SignInResult>
Starts the Google sign-in flow.
Param | Type |
---|---|
options | SignInWithOAuthOptions |
Returns: Promise<SignInResult>
Since: 0.1.0
signInWithMicrosoft(options?: SignInWithOAuthOptions | undefined) => Promise<SignInResult>
Starts the Microsoft sign-in flow.
Param | Type |
---|---|
options | SignInWithOAuthOptions |
Returns: Promise<SignInResult>
Since: 0.1.0
signInWithOpenIdConnect(options: SignInWithOpenIdConnectOptions) => Promise<SignInResult>
Starts the OpenID Connect sign-in flow.
Param | Type |
---|---|
options | SignInWithOpenIdConnectOptions |
Returns: Promise<SignInResult>
Since: 6.1.0
signInWithPhoneNumber(options: SignInWithPhoneNumberOptions) => Promise<void>
Starts the sign-in flow using a phone number.
Use the phoneVerificationCompleted
listener to be notified when the verification is completed.
Use the phoneVerificationFailed
listener to be notified when the verification is failed.
Use the phoneCodeSent
listener to get the verification id.
Only available for Android and iOS.
Param | Type |
---|---|
options | SignInWithPhoneNumberOptions |
Since: 0.1.0
signInWithPlayGames(options?: SignInWithOAuthOptions | undefined) => Promise<SignInResult>
Starts the Play Games sign-in flow.
Only available for Android.
Param | Type |
---|---|
options | SignInWithOAuthOptions |
Returns: Promise<SignInResult>
Since: 0.1.0
signInWithTwitter(options?: SignInWithOAuthOptions | undefined) => Promise<SignInResult>
Starts the Twitter sign-in flow.
Param | Type |
---|---|
options | SignInWithOAuthOptions |
Returns: Promise<SignInResult>
Since: 0.1.0
signInWithYahoo(options?: SignInWithOAuthOptions | undefined) => Promise<SignInResult>
Starts the Yahoo sign-in flow.
Param | Type |
---|---|
options | SignInWithOAuthOptions |
Returns: Promise<SignInResult>
Since: 0.1.0
signOut() => Promise<void>
Starts the sign-out flow.
Since: 0.1.0
unlink(options: UnlinkOptions) => Promise<UnlinkResult>
Unlinks a provider from a user account.
Param | Type |
---|---|
options | UnlinkOptions |
Returns: Promise<UnlinkResult>
Since: 1.1.0
updateEmail(options: UpdateEmailOptions) => Promise<void>
Updates the email address of the currently signed in user.
Param | Type |
---|---|
options | UpdateEmailOptions |
Since: 0.1.0
updatePassword(options: UpdatePasswordOptions) => Promise<void>
Updates the password of the currently signed in user.
Param | Type |
---|---|
options | UpdatePasswordOptions |
Since: 0.1.0
updateProfile(options: UpdateProfileOptions) => Promise<void>
Updates a user's profile data.
Param | Type |
---|---|
options | UpdateProfileOptions |
Since: 1.3.0
useAppLanguage() => Promise<void>
Sets the user-facing language code to be the default app language.
Since: 0.1.0
useEmulator(options: UseEmulatorOptions) => Promise<void>
Instrument your app to talk to the Authentication emulator.
Param | Type |
---|---|
options | UseEmulatorOptions |
Since: 0.2.0
addListener(eventName: 'authStateChange', listenerFunc: AuthStateChangeListener) => Promise<PluginListenerHandle>
Listen for the user's sign-in state changes.
Attention: This listener is not triggered when the skipNativeAuth
is used. Use the Firebase JavaScript SDK instead.
Param | Type |
---|---|
eventName | 'authStateChange' |
listenerFunc | AuthStateChangeListener |
Returns: Promise<PluginListenerHandle>
Since: 0.1.0
addListener(eventName: 'phoneVerificationCompleted', listenerFunc: PhoneVerificationCompletedListener) => Promise<PluginListenerHandle>
Listen for a completed phone verification.
This listener only fires in two situations:
Only available for Android.
Param | Type |
---|---|
eventName | 'phoneVerificationCompleted' |
listenerFunc | PhoneVerificationCompletedListener |
Returns: Promise<PluginListenerHandle>
Since: 1.3.0
addListener(eventName: 'phoneVerificationFailed', listenerFunc: PhoneVerificationFailedListener) => Promise<PluginListenerHandle>
Listen for a failed phone verification.
Param | Type |
---|---|
eventName | 'phoneVerificationFailed' |
listenerFunc | PhoneVerificationFailedListener |
Returns: Promise<PluginListenerHandle>
Since: 1.3.0
addListener(eventName: 'phoneCodeSent', listenerFunc: PhoneCodeSentListener) => Promise<PluginListenerHandle>
Listen for a phone verification code.
Param | Type |
---|---|
eventName | 'phoneCodeSent' |
listenerFunc | PhoneCodeSentListener |
Returns: Promise<PluginListenerHandle>
Since: 1.3.0
removeAllListeners() => Promise<void>
Remove all listeners for this plugin.
Since: 0.1.0
Prop | Type | Description | Since |
---|---|---|---|
oobCode | string | A verification code sent to the user. | 0.2.2 |
Prop | Type | Description | Since |
---|---|---|---|
oobCode | string | A verification code sent to the user. | 0.2.2 |
newPassword | string | The new password. | 0.2.2 |
Prop | Type | Description | Since |
---|---|---|---|
user | User | null | The currently signed-in user, or null if there isn't any. | 0.1.0 |
credential | AuthCredential | null | Credentials returned by an auth provider. | 0.1.0 |
additionalUserInfo | AdditionalUserInfo | null | Additional user information from a federated identity provider. | 0.5.1 |
Prop | Type | Description | Since |
---|---|---|---|
displayName | string | null | 0.1.0 | |
email | string | null | 0.1.0 | |
emailVerified | boolean | 0.1.0 | |
isAnonymous | boolean | 0.1.0 | |
metadata | UserMetadata | The user's metadata. | 5.2.0 |
phoneNumber | string | null | 0.1.0 | |
photoUrl | string | null | 0.1.0 | |
providerData | UserInfo[] | Additional per provider such as displayName and profile information. | 5.2.0 |
providerId | string | 0.1.0 | |
tenantId | string | null | 0.1.0 | |
uid | string | 0.1.0 |
Prop | Type | Description | Since |
---|---|---|---|
creationTime | number | Time the user was created in milliseconds since the epoch. | 5.2.0 |
lastSignInTime | number | Time the user last signed in in milliseconds since the epoch. | 5.2.0 |
Prop | Type | Description | Since |
---|---|---|---|
displayName | string | null | The display name of the user. | 5.2.0 |
email | string | null | The email of the user. | 5.2.0 |
phoneNumber | string | null | The phone number normalized based on the E.164 standard (e.g. +16505550101) for the user. | 5.2.0 |
photoUrl | string | null | The profile photo URL of the user. | 5.2.0 |
providerId | string | The provider used to authenticate the user. | 5.2.0 |
uid | string | The user's unique ID. | 5.2.0 |
Prop | Type | Description | Since |
---|---|---|---|
accessToken | string | The OAuth access token associated with the credential if it belongs to an OAuth provider. | 0.1.0 |
authorizationCode | string | A token that the app uses to interact with the server. Only available for Apple Sign-in on iOS. | 1.2.0 |
idToken | string | The OAuth ID token associated with the credential if it belongs to an OIDC provider. | 0.1.0 |
nonce | string | The random string used to make sure that the ID token you get was granted specifically in response to your app's authentication request. | 0.1.0 |
providerId | string | The authentication provider ID for the credential. | 0.1.0 |
secret | string | The OAuth access token secret associated with the credential if it belongs to an OAuth 1.0 provider. | 0.1.0 |
serverAuthCode | string | The server auth code. Only available for Google Sign-in and Play Games Sign-In on Android and iOS. | 5.2.0 |
Prop | Type | Description | Since |
---|---|---|---|
isNewUser | boolean | Whether the user is new (sign-up) or existing (sign-in). | 0.5.1 |
profile | { [key: string]: unknown; } | Map containing IDP-specific user data. | 0.5.1 |
providerId | string | Identifier for the provider used to authenticate this user. | 0.5.1 |
username | string | The username if the provider is GitHub or Twitter. | 0.5.1 |
Prop | Type | Description | Since |
---|---|---|---|
verificationId | string | The verification ID received from the phoneCodeSent listener. The verificationCode option must also be provided. | 5.0.0 |
verificationCode | string | The verification code either received from the phoneCodeSent listener or entered by the user. The verificationId option must also be provided. | 5.0.0 |
Prop | Type | Since |
---|---|---|
email | string | 0.2.2 |
password | string | 0.2.2 |
Prop | Type | Description | Since |
---|---|---|---|
signInMethods | string[] | The sign-in methods for the specified email address. This list is empty when Email Enumeration Protection is enabled, irrespective of the number of authentication methods available for the given email. | 6.0.0 |
Prop | Type | Description | Since |
---|---|---|---|
email | string | The user's email address. | 6.0.0 |
Prop | Type | Description | Since |
---|---|---|---|
user | User | null | The currently signed-in user, or null if there isn't any. | 0.1.0 |
Prop | Type | Description | Since |
---|---|---|---|
token | string | The Firebase Auth ID token JWT string. | 0.1.0 |
Prop | Type | Description | Since |
---|---|---|---|
forceRefresh | boolean | Force refresh regardless of token expiration. | 0.1.0 |
Prop | Type | Description | Since |
---|---|---|---|
tenantId | string | null | The tenant id. null if it has never been set. | 1.1.0 |
Prop | Type | Description |
---|---|---|
isSignInWithEmailLink | boolean | Whether an incoming link is a signup with email link suitable for signInWithEmailLink(...) . |
Prop | Type | Description | Since |
---|---|---|---|
emailLink | string | The link sent to the user's email address. | 1.1.0 |
Prop | Type | Description | Default | Since |
---|---|---|---|---|
customParameters | SignInCustomParameter[] | Configures custom parameters to be passed to the identity provider during the OAuth sign-in flow. Supports Apple, Facebook, GitHub, Google, Microsoft, Twitter and Yahoo on Web. Supports Apple, GitHub, Microsoft, Twitter and Yahoo on Android. Supports Facebook, GitHub, Microsoft, Twitter and Yahoo on iOS. | 1.1.0 | |
mode | 'popup' | 'redirect' | Whether to use the popup-based OAuth authentication flow or the full-page redirect flow. If you choose redirect , you will get the result of the call via the authStateChange listener after the redirect. Only available for Web. | 'popup' | 1.3.0 |
scopes | string[] | Scopes to request from provider. Supports Apple, Facebook, GitHub, Google, Microsoft, Twitter and Yahoo on Web. Supports Apple, GitHub, Google, Microsoft, Twitter, Yahoo and Play Games on Android. Supports Facebook, GitHub, Google, Microsoft, Twitter and Yahoo on iOS. | 1.1.0 |
Prop | Type | Description | Since |
---|---|---|---|
key | string | The custom parameter key (e.g. login_hint ). | 0.1.0 |
value | string | The custom parameter value (e.g. user@firstadd.onmicrosoft.com ). | 0.1.0 |
Prop | Type | Description | Since |
---|---|---|---|
email | string | The user's email address. | 1.1.0 |
password | string | The user's password. | 1.1.0 |
Prop | Type | Description | Since |
---|---|---|---|
email | string | The user's email address. | 1.1.0 |
emailLink | string | The link sent to the user's email address. | 1.1.0 |
Prop | Type | Description | Since |
---|---|---|---|
providerId | string | The OpenID Connect provider ID. | 6.1.0 |
Prop | Type | Description | Default | Since |
---|---|---|---|---|
phoneNumber | string | The phone number to be verified in E.164 format. | 0.1.0 | |
recaptchaVerifier | unknown | The reCAPTCHA verifier. Must be an instance of firebase.auth.RecaptchaVerifier . Only available for Web. | 5.2.0 | |
resendCode | boolean | Resend the verification code to the specified phone number. signInWithPhoneNumber must be called once before using this option. Only available for Android. | false | 1.3.0 |
timeout | number | The maximum amount of time in seconds to wait for the SMS auto-retrieval. Use 0 to disable SMS-auto-retrieval. Only available for Android. | 60 | 5.4.0 |
Prop | Type | Description | Since |
---|---|---|---|
token | string | The access token to revoke. | 6.1.0 |
Prop | Type | Description | Since |
---|---|---|---|
actionCodeSettings | ActionCodeSettings | Structure that contains the required continue/state URL with optional Android and iOS bundle identifiers. | 6.1.0 |
An interface that defines the required continue/state URL with optional Android and iOS bundle identifiers.
Prop | Type | Description |
---|---|---|
android | { installApp?: boolean; minimumVersion?: string; packageName: string; } | Sets the Android package name. |
handleCodeInApp | boolean | When set to true, the action code link will be be sent as a Universal Link or Android App Link and will be opened by the app if installed. |
iOS | { bundleId: string; } | Sets the iOS bundle ID. |
url | string | Sets the link continue/state URL. |
dynamicLinkDomain | string | When multiple custom dynamic link domains are defined for a project, specify which one to use when the link is to be opened via a specified mobile app (for example, example.page.link ). |
Prop | Type | Description | Since |
---|---|---|---|
email | string | 0.2.2 | |
actionCodeSettings | ActionCodeSettings | Structure that contains the required continue/state URL with optional Android and iOS bundle identifiers. | 6.1.0 |
Prop | Type | Description | Since |
---|---|---|---|
email | string | The user's email address. | 1.1.0 |
actionCodeSettings | ActionCodeSettings | Structure that contains the required continue/state URL with optional Android and iOS bundle identifiers. | 1.1.0 |
Prop | Type | Description | Since |
---|---|---|---|
languageCode | string | BCP 47 language code. | 0.1.0 |
Prop | Type | Description | Since |
---|---|---|---|
persistence | Persistence | The persistence types. | 5.2.0 |
An interface covering the possible persistence mechanism types.
Prop | Type | Description |
---|---|---|
type | 'SESSION' | 'LOCAL' | 'NONE' | Type of Persistence. - 'SESSION' is used for temporary persistence such as sessionStorage . - 'LOCAL' is used for long term persistence such as localStorage or IndexedDB . - 'NONE' is used for in-memory, or no persistence. |
Prop | Type | Description | Since |
---|---|---|---|
tenantId | string | The tenant id. | 1.1.0 |
Prop | Type | Description | Since |
---|---|---|---|
token | string | The custom token to sign in with. | 0.1.0 |
Prop | Type | Description | Since |
---|---|---|---|
email | string | The user's email address. | 0.2.2 |
password | string | The user's password. | 0.2.2 |
Prop | Type | Description | Since |
---|---|---|---|
email | string | The user's email address. | 1.1.0 |
emailLink | string | The link sent to the user's email address. | 1.1.0 |
Prop | Type | Description | Since |
---|---|---|---|
skipNativeAuth | boolean | Whether the plugin should skip the native authentication or not. Only needed if you want to use the Firebase JavaScript SDK. This value overwrites the configrations value of the skipNativeAuth option. If no value is set, the configuration value is used. Note that the plugin may behave differently across the platforms. skipNativeAuth cannot be used in combination with signInWithCustomToken , createUserWithEmailAndPassword or signInWithEmailAndPassword . Only available for Android and iOS. | 1.1.0 |
Prop | Type | Description | Since |
---|---|---|---|
user | User | null | The currently signed-in user, or null if there isn't any. | 1.1.0 |
Prop | Type | Description | Since |
---|---|---|---|
providerId | ProviderId | The provider to unlink. | 1.1.0 |
Prop | Type | Description | Since |
---|---|---|---|
newEmail | string | The new email address. | 0.2.2 |
Prop | Type | Description | Since |
---|---|---|---|
newPassword | string | The new password. | 0.2.2 |
Prop | Type | Description | Since |
---|---|---|---|
displayName | string | null | The user's display name. | 1.3.0 |
photoUrl | string | null | The user's photo URL. | 1.3.0 |
Prop | Type | Description | Default | Since |
---|---|---|---|---|
host | string | The emulator host without any port or scheme. | 0.2.0 | |
port | number | The emulator port. | 9099 | 0.2.0 |
scheme | string | The emulator scheme. Only available for Web. | "http" | 5.2.0 |
Prop | Type |
---|---|
remove | () => Promise<void> |
Prop | Type | Description | Since |
---|---|---|---|
user | User | null | The currently signed-in user, or null if there isn't any. | 0.1.0 |
Prop | Type | Description | Since |
---|---|---|---|
verificationCode | string | The verification code sent to the user's phone number. If instant verification is used, this property is not set. | 5.0.0 |
Prop | Type | Description | Since |
---|---|---|---|
message | string | The error message. | 1.3.0 |
Prop | Type | Description | Since |
---|---|---|---|
verificationId | string | The verification ID, which is needed to identify the verification code. | 1.3.0 |
SignInWithOpenIdConnectOptions
Callback to receive the user's sign-in state change notifications.
(change: AuthStateChange): void
Callback to receive the verification code sent to the user's phone number.
(event: PhoneVerificationCompletedEvent): void
Callback to receive notifications of failed phone verification.
(event: PhoneVerificationFailedEvent): void
Callback to receive the verification ID.
(event: PhoneCodeSentEvent): void
Members | Value | Description | Since |
---|---|---|---|
IndexedDbLocal | 'INDEXED_DB_LOCAL' | Long term persistence using IndexedDB. | 5.2.0 |
InMemory | 'IN_MEMORY' | No persistence. | 5.2.0 |
BrowserLocal | 'BROWSER_LOCAL' | Long term persistence using local storage. | 5.2.0 |
BrowserSession | 'BROWSER_SESSION' | Temporary persistence using session storage. | 5.2.0 |
Members | Value |
---|---|
APPLE | 'apple.com' |
FACEBOOK | 'facebook.com' |
GAME_CENTER | 'gc.apple.com' |
GITHUB | 'github.com' |
GOOGLE | 'google.com' |
MICROSOFT | 'microsoft.com' |
PLAY_GAMES | 'playgames.google.com' |
TWITTER | 'twitter.com' |
YAHOO | 'yahoo.com' |
PASSWORD | 'password' |
PHONE | 'phone' |
See CHANGELOG.md.
See LICENSE.
This plugin is based on the Capacitor Firebase Authentication plugin. Thanks to everyone who contributed to the project!
This project is not affiliated with, endorsed by, sponsored by, or approved by Google LLC or any of their affiliates or subsidiaries. ↩
FAQs
Capacitor plugin for Firebase Authentication.
The npm package @capacitor-firebase/authentication receives a total of 7,779 weekly downloads. As such, @capacitor-firebase/authentication popularity was classified as popular.
We found that @capacitor-firebase/authentication demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.