Skip to content

team-reflect/capacitor-firebase-authentication

 
 

Repository files navigation


Firebase Authentication

@robingenz/capacitor-firebase-authentication

Capacitor plugin for Firebase Authentication.


Maintainers

Maintainer GitHub Social
Robin Genz robingenz @robin_genz

Installation

npm install @robingenz/capacitor-firebase-authentication
npx cap sync

Add Firebase to your project if you haven't already (Android / iOS).

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)
}

The further installation steps depend on the selected authentication method:

Configuration

These configuration values are available:

Prop Type Description Default
skipNativeAuth boolean Configure whether the plugin should skip the native authentication. Only needed if you want to use the Firebase JavaScript SDK. Only available for Android and iOS. false

Examples

In capacitor.config.json:

{
  "plugins": {
    "FirebaseAuthentication": {
      "skipNativeAuth": false
    }
  }
}

In capacitor.config.ts:

/// <reference types="@capacitor/firebase-authentication" />

import { CapacitorConfig } from '@capacitor/cli';

const config: CapacitorConfig = {
  plugins: {
    FirebaseAuthentication: {
      skipNativeAuth: false,
    },
  },
};

export default config;

Usage

import { FirebaseAuthentication } from '@robingenz/capacitor-firebase-authentication';

const getCurrentUser = async () => {
  const result = await FirebaseAuthentication.getCurrentUser();
  return result.user;
};

const getIdToken = async () => {
  const result = await FirebaseAuthentication.getIdToken();
  return result.token;
};

const setLanguageCode = async () => {
  await FirebaseAuthentication.setLanguageCode({ languageCode: 'en-US' });
};

const signInWithApple = async () => {
  await FirebaseAuthentication.signInWithApple();
};

const signInWithGithub = async () => {
  await FirebaseAuthentication.signInWithGithub();
};

const signInWithGoogle = async () => {
  await FirebaseAuthentication.signInWithGoogle();
};

const signInWithMicrosoft = async () => {
  await FirebaseAuthentication.signInWithMicrosoft();
};

const signInWithTwitter = async () => {
  await FirebaseAuthentication.signInWithTwitter();
};

const signInWithYahoo = async () => {
  await FirebaseAuthentication.signInWithYahoo();
};

const signOut = async () => {
  await FirebaseAuthentication.signOut();
};

const useAppLanguage = async () => {
  await FirebaseAuthentication.useAppLanguage();
};

API

getCurrentUser()

getCurrentUser() => Promise<GetCurrentUserResult>

Fetches the currently signed-in user.

Only available for Android and iOS.

Returns: Promise<GetCurrentUserResult>


getIdToken(...)

getIdToken(options?: GetIdTokenOptions | undefined) => Promise<GetIdTokenResult>

Fetches the Firebase Auth ID Token for the currently signed-in user.

Only available for Android and iOS.

Param Type
options GetIdTokenOptions

Returns: Promise<GetIdTokenResult>


setLanguageCode(...)

setLanguageCode(options: SetLanguageCodeOptions) => Promise<void>

Sets the user-facing language code for auth operations.

Param Type
options SetLanguageCodeOptions

signInWithApple()

signInWithApple() => Promise<SignInResult>

Starts the Apple sign-in flow.

Only available for Android and iOS.

Returns: Promise<SignInResult>


signInWithGithub()

signInWithGithub() => Promise<SignInResult>

Starts the GitHub sign-in flow.

Only available for Android and iOS.

Returns: Promise<SignInResult>


signInWithGoogle()

signInWithGoogle() => Promise<SignInResult>

Starts the Google sign-in flow.

Only available for Android and iOS.

Returns: Promise<SignInResult>


signInWithMicrosoft()

signInWithMicrosoft() => Promise<SignInResult>

Starts the Microsoft sign-in flow.

Only available for Android and iOS.

Returns: Promise<SignInResult>


signInWithTwitter()

signInWithTwitter() => Promise<SignInResult>

Starts the Twitter sign-in flow.

Only available for Android and iOS.

Returns: Promise<SignInResult>


signInWithYahoo()

signInWithYahoo() => Promise<SignInResult>

Starts the Yahoo sign-in flow.

Only available for Android and iOS.

Returns: Promise<SignInResult>


signOut()

signOut() => Promise<void>

Starts the sign-out flow.

Only available for Android and iOS.


useAppLanguage()

useAppLanguage() => Promise<void>

Sets the user-facing language code to be the default app language.


Interfaces

GetCurrentUserResult

Prop Type Description
user User | null The currently signed-in user, or null if there isn't any.

User

Prop Type
displayName string | null
email string | null
emailVerified boolean
isAnonymous boolean
phoneNumber string | null
photoUrl string | null
providerId string
tenantId string | null
uid string

GetIdTokenResult

Prop Type Description
token string The Firebase Auth ID token JWT string.

GetIdTokenOptions

Prop Type Description
forceRefresh boolean Force refresh regardless of token expiration.

SetLanguageCodeOptions

Prop Type Description
languageCode string BCP 47 language code. Example: en-US.

SignInResult

Prop Type Description
user User | null The currently signed-in user, or null if there isn't any.
credential AuthCredential | null Credentials returned by an auth provider.

AuthCredential

Prop Type Description
providerId string The authentication provider ID for the credential. For example, 'google.com'.
accessToken string The OAuth access token associated with the credential if it belongs to an OAuth provider.
idToken string The OAuth ID token associated with the credential if it belongs to an OIDC provider.
secret string The OAuth access token secret associated with the credential if it belongs to an OAuth 1.0 provider.
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.

FAQ

  1. What does this plugin do?
    This plugin enables the use of Firebase Authentication in a Capacitor app. It uses the native Firebase SDK for Java (Android) and Swift (iOS). Accordingly, the plugin signs the user in at the native layer of the app. The Firebase JavaScript SDK is not required, but can be used.
  2. Which platforms are supported?
    Currently, only Android and iOS are supported. It is planned to support web soon as well (see #20). In the meantime, the Firebase JavaScript SDK can be used.
  3. How can I use this plugin with the Firebase JavaScript SDK?
    See here.

Changelog

See CHANGELOG.md.

License

See LICENSE.

About

⚡️ Capacitor plugin for Firebase Authentication.

Resources

License

Stars

Watchers

Forks

Languages

  • Java 42.1%
  • Swift 37.7%
  • TypeScript 13.3%
  • Objective-C 3.2%
  • Ruby 2.6%
  • JavaScript 1.1%