באמצעות Firebase JS SDK, אתם יכולים לאפשר למשתמשים ב-Firebase לבצע אימות באמצעות כל ספק OAuth נתמך בסביבת Cordova. אפשר לשלב כל ספק OAuth נתמך באמצעות Firebase SDK כדי לבצע את תהליך הכניסה, או לבצע את תהליך OAuth באופן ידני ולהעביר את פרטי הכניסה של OAuth ל-Firebase.
הגדרת אימות ב-Firebase ל-Cordova
מוסיפים את Firebase לפרויקט JavaScript. כשמוסיפים את קטע הקוד של Firebase, חשוב לשים לב למשתנה התצורה
authDomain
, שאמור להיראות כך:my-app.firebaseapp.com
. אם משתמשים בדומיין מותאם אישית במקום בדומייןfirebaseapp.com
שהוקצה ב-Firebase, צריך להשתמש בדומיין המותאם אישית במקום זאת.כדי להגדיר אפליקציה ל-Android, מוסיפים את האפליקציה ל-מסוף Firebase ומזינים את פרטי האפליקציה. אין צורך בקובץ google-services.json שנוצר.
כדי להגדיר אפליקציה ל-iOS, יוצרים אפליקציה ל-iOS ומוסיפים אותה למסוף Firebase. מזהה החבילה ב-iOS יידרש לכם מאוחר יותר, כשתתקינו את הפלאגין של פורמט כתובת ה-URL המותאם אישית.
מפעילים את הקישורים הדינמיים ב-Firebase:
- במסוף Firebase, פותחים את הקטע Dynamic Links.
-
אם עדיין לא אישרתם את התנאים של Dynamic Links ויצרתם דומיין Dynamic Links, עליכם לעשות זאת עכשיו.
אם כבר יצרתם דומיין Dynamic Links, שימו לב אליו. דומיין Dynamic Links בדרך כלל נראה כמו הדוגמה הבאה:
example.page.link
תצטרכו את הערך הזה כשתקבעו שהאפליקציה שלכם ל-Apple או ל-Android תוכל ליירט את הקישור הנכנס.
מפעילים את הכניסה באמצעות חשבון Google במסוף Firebase:
- במסוף Firebase, פותחים את הקטע Auth.
- בכרטיסייה Sign in method, מפעילים את השיטה Google sign-in ולוחצים על Save.
מתקינים את הפלאגינים הנדרשים בפרויקט 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
מוסיפים את ההגדרה הבאה לקובץ
config.xml
של Cordova, כאשרAUTH_DOMAIN
הוא הדומיין משלב (1) ו-DYNAMIC_LINK_DOMAIN
הוא הדומיין משלב (3c).<universal-links> <host name="DYNAMIC_LINK_DOMAIN" scheme="https" /> <host name="AUTH_DOMAIN" scheme="https"> <path url="/__/auth/callback"/> </host> </universal-links>
הגדרה לדוגמה עשויה להיראות כך:
<universal-links> <host name="example.page.link" scheme="https" /> <host name="example-app.firebaseapp.com" scheme="https"> <path url="/__/auth/callback"/> </host> </universal-links>
אם משתמשים בדומיין מותאם אישית
auth.custom.domain.com
, מחליפים אתmy-app.firebaseapp.com
בדומיין הזה.באפליקציות ל-Android, צריך להשתמש ב-
singleTask
עבורlaunchMode
.<preference name="AndroidLaunchMode" value="singleTask" />
טיפול בתהליך הכניסה באמצעות Firebase SDK
אימות Firebase תלוי באירוע
deviceReady
כדי לקבוע בצורה נכונה את סביבת Cordova הנוכחית. חשוב לוודא שהמכונה של אפליקציית Firebase מופעלת אחרי הפעלת האירוע הזה.יוצרים מופע של אובייקט הספק של Google:
Web
import { GoogleAuthProvider } from "firebase/auth/cordova"; const provider = new GoogleAuthProvider();
Web
var provider = new firebase.auth.GoogleAuthProvider();
אימות ב-Firebase באמצעות אובייקט הספק של Google באמצעות
signInWithRedirect
. לתשומת ליבכם: אין תמיכה ב-signInWithPopup
ב-Cordova.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; });
כדי לטפל במקרה שבו פעילות האפליקציה נמחקת לפני שהפעולה של הכניסה לחשבון מסתיימת, צריך להפעיל את
getRedirectResult
כשהאפליקציה נטענת.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; });
אפשר להשתמש באותו מנגנון כדי לקשר ספק חדש באמצעות
linkWithRedirect
או כדי לבצע אימות מחדש עם ספק קיים באמצעותreauthenticateWithRedirect
.