Avec le SDK JS Firebase, vous pouvez permettre à vos utilisateurs Firebase de s'authentifier à l'aide de n'importe quelle un fournisseur OAuth compatible avec un environnement Cordova. Vous pouvez intégrer n'importe quel fournisseur OAuth compatible, soit en utilisant le SDK Firebase pour effectuer la de connexion, soit en exécutant le flux OAuth manuellement et en transmettant les identifiants OAuth obtenus à Firebase.
Configurer Firebase Authentication pour Cordova
Ajoutez Firebase à votre projet JavaScript. Lorsque vous ajoutez le paramètre Dans l'extrait Firebase, notez la variable de configuration
authDomain
, qui doit se présenter sous la formemy-app.firebaseapp.com
. Si un domaine personnalisé est utilisé au lieu du domainefirebaseapp.com
provisionné par Firebase, doit être utilisé à la place.Pour configurer une application Android, ajoutez-la à la console Firebase et saisissez les informations la concernant. Il n'est pas nécessaire que les champs générés google-services.json
Pour configurer une application iOS, créez-en une et ajoutez-la au Console Firebase. Vous aurez besoin de l'ID du bundle iOS pour l'ajouter plus tard lorsque installer le plug-in de schéma d'URL personnalisé.
Activez Firebase Dynamic Links:
- Dans la console Firebase, ouvrez la section Dynamic Links.
-
Si vous n'avez pas encore accepté les conditions d'utilisation de Dynamic Links et créé un Dynamic Links domaine, faites-le maintenant.
Si vous avez déjà créé un domaine Dynamic Links, prenez-en note. Dynamic Links de domaine 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 intercepte le lien entrant.
Activez Google Sign-In dans la console Firebase:
- Dans la console Firebase, ouvrez la section Authentification.
- Dans l'onglet Mode de connexion, activez la méthode de connexion Google et cliquez sur Enregistrer.
Installez les plug-ins 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 au fichier
config.xml
Cordova, oùAUTH_DOMAIN
est le domaine de l'étape (1) etDYNAMIC_LINK_DOMAIN
est le 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>
Voici un exemple de configuration:
<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
.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
pour déterminer l'environnement actuel de Cordoue. Assurez-vous que l'instance d'application Firebase est initialisé après le déclenchement de cet événement.Créez une instance de l'objet de fournisseur Google :
Web
import { GoogleAuthProvider } from "firebase/auth/cordova"; const provider = new GoogleAuthProvider();
Web
var provider = new firebase.auth.GoogleAuthProvider();
Authentifiez-vous avec Firebase à l'aide de l'objet de fournisseur Google à l'aide de
signInWithRedirect
Notez quesignInWithPopup
est non disponible à Cordoue.Web
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
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 connexion opération terminée, appelez
getRedirectResult
lorsque votre application charge.Web
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
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 associer un nouveau fournisseur via
linkWithRedirect
ou pour vous réauthentifier auprès d'un fournisseur existant avecreauthenticateWithRedirect
.