2018-12-01 16:55:01 +01:00
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' ] ,
2020-05-16 14:40:49 +02:00
platforms : [ 'Android' , 'iOS' ] ,
2018-12-01 16:55:01 +01:00
} )
2019-02-20 17:37:39 +01:00
@Injectable ( )
2018-12-01 16:55:01 +01:00
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<any>} Returns the id token
*/
@Cordova ( { sync : true } )
getIdToken ( forceRefresh : boolean ) : Promise < any > {
return ;
}
/**
* Tries to create a new user account with the given email address and password.
* @param email Email
* @param password Password
*/
@Cordova ( { sync : true } )
2020-05-16 14:40:49 +02:00
createUserWithEmailAndPassword ( email : string , password : string ) : Promise < any > {
2018-12-01 16:55:01 +01:00
return ;
}
/**
* Initiates email verification for the current user.
*/
@Cordova ( { sync : true } )
sendEmailVerification ( ) : Promise < any > {
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 < any > {
return ;
}
/**
* Asynchronously signs in using an email and password.
* @param email Email
* @param password Password
*/
@Cordova ( { sync : true } )
signInWithEmailAndPassword ( email : string , password : string ) : Promise < any > {
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 < any > {
return ;
}
/**
* Asynchronously signs in using verificationId and 6-digit SMS code.
* @param verificationId Verification ID
* @param smsCode SMS code
*/
@Cordova ( { sync : true } )
2020-05-16 14:40:49 +02:00
signInWithVerificationId ( verificationId : string , smsCode : string ) : Promise < any > {
2018-12-01 16:55:01 +01:00
return ;
}
/**
* Create and use temporary anonymous account to authenticate with Firebase.
*/
@Cordova ( { sync : true } )
signInAnonymously ( ) : Promise < any > {
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 < any > {
return ;
}
2021-01-23 11:11:26 -06:00
/**
* 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 < any > {
return ;
}
2018-12-01 16:55:01 +01:00
/**
* 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 < any > {
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 < any > {
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 < any > {
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 < any > {
return ;
}
/**
* Sets languageCode to the app’ s current language.
*/
@Cordova ( { sync : true } )
useAppLanguage ( ) : Promise < any > {
return ;
}
/**
* Signs out the current user and clears it from the disk cache.
*/
@Cordova ( { sync : true } )
signOut ( ) : Promise < any > {
return ;
}
}