באמצעות Firebase JS SDK, אתם יכולים לאפשר למשתמשים ב-Firebase לבצע אימות באמצעות כל ספק OAuth נתמך בסביבת Cordova. אפשר לשלב כל ספק OAuth נתמך באמצעות Firebase SDK, כדי לבצע בכניסה לחשבון, או על ידי ביצוע ידני של זרימת OAuth והעברת את פרטי הכניסה שהתקבלו ב-OAuth ל-Firebase.
איך מגדירים אימות ב-Firebase לקורדובה
מוסיפים את Firebase לפרויקט JavaScript. כשמוסיפים את קטע קוד של Firebase, שימו לב למשתנה ההגדרה
authDomain
, שאמור להיראות כמוmy-app.firebaseapp.com
. אם משתמשים בדומיין מותאם אישית במקום הדומייןfirebaseapp.com
שהוקצה ל-Firebase, הדומיין המותאם אישית צריך להשתמש בדומיין במקום זאת.כדי להגדיר אפליקציה ל-Android, צריך להוסיף את האפליקציה ל-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, פותחים את הקטע אימות.
- בכרטיסייה שיטת כניסה, מפעילים את שיטת הכניסה באמצעות חשבון Google. לוחצים על 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
הוא הדומיין דומיין משלב 3ג.<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
.