import { Injectable } from '@angular/core'; import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core'; import { Observable } from 'rxjs'; /** * @name Firebase Authentication * @description * Cordova plugin for Firebase Authentication * * @usage * ```typescript * import { FirebaseAuthentication } from '@ionic-native/firebase-authentication/ngx'; * * * constructor(private firebaseAuthentication: FirebaseAuthentication) { } * * ... * * * this.firebaseAuthentication.createUserWithEmailAndPassword('test@gmail.com', '123') * .then((res: any) => console.log(res)) * .catch((error: any) => console.error(error)); * * ``` */ @Plugin({ pluginName: 'FirebaseAuthentication', plugin: 'cordova-plugin-firebase-authentication', pluginRef: 'cordova.plugins.firebase.auth', repo: 'https://github.com/chemerisuk/cordova-plugin-firebase-authentication', install: 'ionic cordova plugin add cordova-plugin-firebase-authentication --variable FIREBASE_AUTH_VERSION=version', installVariables: ['FIREBASE_AUTH_VERSION'], platforms: ['Android', 'iOS'], }) @Injectable() export class FirebaseAuthentication extends IonicNativePlugin { /** * Returns a JWT token used to identify the user to a Firebase service. * @param forceRefresh {boolean} Force Refresh * @return {Promise} Returns the id token */ @Cordova({ sync: true }) getIdToken(forceRefresh: boolean): Promise { return; } /** * Tries to create a new user account with the given email address and password. * @param email Email * @param password Password */ @Cordova({ sync: true }) createUserWithEmailAndPassword(email: string, password: string): Promise { return; } /** * Initiates email verification for the current user. */ @Cordova({ sync: true }) sendEmailVerification(): Promise { return; } /** * Triggers the Firebase Authentication backend to send a password-reset email to the given email address, * which must correspond to an existing user of your app. * @param email Email */ @Cordova({ sync: true }) sendPasswordResetEmail(email: string): Promise { return; } /** * Asynchronously signs in using an email and password. * @param email Email * @param password Password */ @Cordova({ sync: true }) signInWithEmailAndPassword(email: string, password: string): Promise { return; } /** * Starts the phone number verification process for the given phone number. * NOTE: Android supports auto-verify and instant device verification. * Therefore in that cases it doesn't make sense to ask for sms code. * It's recommended to register onAuthStateChanged callback to be notified on auto sign-in. * timeout [milliseconds] is the maximum amount of time you are willing to wait for SMS auto-retrieval * to be completed by the library. Maximum allowed value is 2 minutes. Use 0 to disable SMS-auto-retrieval. * If you specify a positive value less than 30 seconds, library will default to 30 seconds. * @param phoneNumber Phone number * @param timeout {number} Timeout */ @Cordova({ sync: true }) verifyPhoneNumber(phoneNumber: string, timeout: number): Promise { return; } /** * Asynchronously signs in using verificationId and 6-digit SMS code. * @param verificationId Verification ID * @param smsCode SMS code */ @Cordova({ sync: true }) signInWithVerificationId(verificationId: string, smsCode: string): Promise { return; } /** * Create and use temporary anonymous account to authenticate with Firebase. */ @Cordova({ sync: true }) signInAnonymously(): Promise { return; } /** * Uses Google's idToken and accessToken to sign-in into firebase account. In order to retrieve those tokens follow instructions for Android and iOS * @param idToken ID Token * @param accessToken Access Token */ @Cordova({ sync: true }) signInWithGoogle(idToken: string, accessToken: string): Promise { return; } /** * Uses Apples's idToken and rawNonce (optional) to sign-in into firebase account. In order to retrieve those tokens follow instructions for Android and iOS * @param idToken ID Token * @param rawNonce Access Token */ @Cordova({ sync: true }) signInWithApple(identityToken: string, rawNonce?: string): Promise { return; } /** * Uses Facebook's accessToken to sign-in into firebase account. In order to retrieve those tokens follow instructions for Android and iOS. * @param accessToken Access Token */ @Cordova({ sync: true }) signInWithFacebook(accessToken: string): Promise { return; } /** * Uses Twitter's token and secret to sign-in into firebase account. In order to retrieve those tokens follow instructions for Android and iOS. * @param token Token * @param secret Secret */ @Cordova({ sync: true }) signInWithTwitter(token: string, secret: string): Promise { return; } /** * 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. */ @Cordova({ observable: true, callbackOrder: 'reverse' }) onAuthStateChanged(): Observable { return; } /** * Set's the current user language code. The string used to set this property must be a language code that follows BCP 47. * @param languageCode Language Code */ @Cordova({ sync: true }) setLanguageCode(languageCode: string): Promise { return; } /** * Sets languageCode to the app’s current language. */ @Cordova({ sync: true }) useAppLanguage(): Promise { return; } /** * Signs out the current user and clears it from the disk cache. */ @Cordova({ sync: true }) signOut(): Promise { return; } }