Avec le SDK Firebase JS, vous pouvez permettre à vos utilisateurs Firebase de s'authentifier à l'aide de n'importe quel fournisseur OAuth pris en charge dans un environnement Cordova. Vous pouvez intégrer n'importe quel fournisseur OAuth pris en charge soit en utilisant le SDK Firebase pour effectuer le flux de connexion, soit en exécutant le flux OAuth manuellement et en transmettant les informations d'identification OAuth résultantes à Firebase.
Configurer l'authentification Firebase pour Cordova
Ajoutez Firebase à votre projet JavaScript . Lors de l'ajout de l'extrait Firebase, prenez note de la variable de configuration
authDomain
, qui devrait ressembler àmy-app.firebaseapp.com
. Si un domaine personnalisé est utilisé à la place du domainefirebaseapp.com
provisionné par Firebase, le domaine personnalisé doit être utilisé à la place.Pour configurer une application Android, ajoutez votre application Android à la console Firebase et saisissez les détails de votre application. Vous n'avez pas besoin du google-services.json généré.
Pour configurer une application iOS, créez une application iOS et ajoutez-la à la console Firebase . Vous aurez besoin de l'ID du bundle iOS à ajouter plus tard lors de l'installation du plugin de schéma d'URL personnalisé.
Activer les liens dynamiques Firebase :
- Dans la console Firebase , ouvrez la section Liens dynamiques .
Si vous n'avez pas encore accepté les conditions Dynamic Links et créé un domaine Dynamic Links, faites-le maintenant.
Si vous avez déjà créé un domaine Dynamic Links, prenez-en note. Un domaine Dynamic Links ressemble généralement à l’exemple suivant :
example.page.link
Vous aurez besoin de cette valeur lorsque vous configurerez votre application Apple ou Android pour intercepter le lien entrant.
Activez Google Sign-In dans la console Firebase :
- Dans la console Firebase , ouvrez la section Auth .
- Dans l'onglet Méthode de connexion , activez la méthode de connexion Google et cliquez sur Enregistrer .
Installez les plugins requis dans votre projet Cordova.
# Plugin to pass application build info (app name, ID, etc) to the OAuth widget. cordova plugin add cordova-plugin-buildinfo --save # Plugin to handle Universal Links (Android app link redirects) cordova plugin add cordova-universal-links-plugin-fix --save # Plugin to handle opening secure browser views on iOS/Android mobile devices cordova plugin add cordova-plugin-browsertab --save # Plugin to handle opening a browser view in older versions of iOS and Android cordova plugin add cordova-plugin-inappbrowser --save # Plugin to handle deep linking through Custom Scheme for iOS # Substitute *com.firebase.cordova* with the iOS bundle ID of your app. cordova plugin add cordova-plugin-customurlscheme --variable \ URL_SCHEME=com.firebase.cordova --save
Ajoutez la configuration suivante à votre fichier Cordova
config.xml
, oùAUTH_DOMAIN
est le domaine de l'étape (1) etDYNAMIC_LINK_DOMAIN
est le domaine de l'étape (3c).<universal-links> <host name="DYNAMIC_LINK_DOMAIN" scheme="https" /> <host name="AUTH_DOMAIN" scheme="https"> <path url="/__/auth/callback"/> </host> </universal-links>
Un exemple de configuration pourrait ressembler à :
<universal-links> <host name="example.page.link" scheme="https" /> <host name="example-app.firebaseapp.com" scheme="https"> <path url="/__/auth/callback"/> </host> </universal-links>
Si un domaine personnalisé
auth.custom.domain.com
est utilisé, remplacezmy-app.firebaseapp.com
par celui-ci.Pour l'application Android,
singleTask
doit être utilisé pourlaunchMode
.<preference name="AndroidLaunchMode" value="singleTask" />
Gérer le flux de connexion avec le SDK Firebase
Firebase Auth dépend de l'événement
deviceReady
afin de déterminer correctement l'environnement Cordova actuel. Assurez-vous que l'instance de l'application Firebase est initialisée après le déclenchement de cet événement.Créez une instance de l'objet fournisseur Google :
Web modular API
import { GoogleAuthProvider } from "firebase/auth/cordova"; const provider = new GoogleAuthProvider();
Web namespaced API
var provider = new firebase.auth.GoogleAuthProvider();
Authentifiez-vous auprès de Firebase à l'aide de l'objet fournisseur Google à l'aide de
signInWithRedirect
. Notez quesignInWithPopup
n'est pas pris en charge dans Cordova.Web modular API
import { getAuth, signInWithRedirect, getRedirectResult, GoogleAuthProvider } from "firebase/auth/cordova"; const auth = getAuth(); signInWithRedirect(auth, new GoogleAuthProvider()) .then(() => { return getRedirectResult(auth); }) .then((result) => { const credential = GoogleAuthProvider.credentialFromResult(result); // This gives you a Google Access Token. // You can use it to access the Google API. const token = credential.accessToken; // The signed-in user info. const user = result.user; // ... }).catch((error) => { // Handle Errors here. const errorCode = error.code; const errorMessage = error.message; });
Web namespaced API
firebase.auth().signInWithRedirect(provider).then(() => { return firebase.auth().getRedirectResult(); }).then((result) => { /** @type {firebase.auth.OAuthCredential} */ var credential = result.credential; // This gives you a Google Access Token. // You can use it to access the Google API. var token = credential.accessToken; // The signed-in user info. var user = result.user; // ... }).catch((error) => { // Handle Errors here. var errorCode = error.code; var errorMessage = error.message; });
Pour gérer le cas où l’activité de l’application est détruite avant la fin de l’opération de connexion, appelez
getRedirectResult
lors du chargement de votre application.Web modular API
import { getAuth, getRedirectResult, GoogleAuthProvider } from "firebase/auth/cordova"; const auth = getAuth(); getRedirectResult(auth) .then((result) => { const credential = GoogleAuthProvider.credentialFromResult(result); if (credential) { // This gives you a Google Access Token. // You can use it to access the Google API. const token = credential.accessToken; // The signed-in user info. const user = result.user; // ... } }) .catch((error) => { // Handle Errors here. const errorCode = error.code; const errorMessage = error.message; });
Web namespaced API
firebase.auth().getRedirectResult().then((result) => { if (result.credential) { /** @type {firebase.auth.OAuthCredential} */ var credential = result.credential; // This gives you a Google Access Token. // You can use it to access the Google API. var token = credential.accessToken; // The signed-in user info. var user = result.user; // ... } }).catch((error) => { // Handle Errors here. var errorCode = error.code; var errorMessage = error.message; });
Le même mécanisme peut être utilisé pour lier un nouveau fournisseur via
linkWithRedirect
ou pour se réauthentifier auprès d'un fournisseur existant à l'aidereauthenticateWithRedirect
.