Save the date - Google I/O returns May 18-20. Register to get the most out of the digital experience: Build your schedule, reserve space, participate in Q&As, earn Google Developer profile badges, and more. Register now
דף זה תורגם על ידי Cloud Translation API.
Switch to English

אמת באמצעות כניסה באמצעות Google עם JavaScript

באפשרותך לאפשר למשתמשים לבצע אימות באמצעות Firebase באמצעות חשבונות Google שלהם על ידי שילוב הכניסה של Google באפליקציה שלך. באפשרותך לשלב את כניסה של Google באמצעות שימוש ב- Firebase SDK לביצוע זרימת הכניסה, או על ידי ביצוע זרימת הכניסה של Google באופן ידני והעברת אסימון המזהה שהתקבל ל- Firebase.

לפני שאתה מתחיל

  1. הוסף את Firebase לפרויקט JavaScript שלך .
  2. אפשר כניסה של Google במסוף Firebase:
    1. במסוף Firebase , פתח את החלק Auth .
    2. בכרטיסיה שיטת כניסה , הפעל את שיטת הכניסה של Google ולחץ על שמור .

לטפל בזרימת הכניסה באמצעות SDK של Firebase

אם אתה בונה אפליקציית אינטרנט, הדרך הקלה ביותר לאמת את המשתמשים שלך באמצעות Firebase באמצעות חשבונות Google שלהם היא לטפל בזרימת הכניסה באמצעות Firebase JavaScript SDK. (אם ברצונך לאמת משתמש בסביבת Node.js או בסביבה אחרת שאינה דפדפן, עליך לטפל בזרימת הכניסה באופן ידני.)

כדי לטפל בזרימת הכניסה עם Firebase JavaScript SDK, בצע את הצעדים הבאים:

  1. צור מופע של אובייקט ספק Google:

    אינטרנט v8

    var provider = new firebase.auth.GoogleAuthProvider();

    אינטרנט v9

    import { GoogleAuthProvider } from "firebase/auth";
    
    const provider = new GoogleAuthProvider();
  2. אופציונלי : ציין טווחי OAuth 2.0 נוספים שברצונך לבקש מספק האימות. כדי להוסיף היקף, התקשר ל- addScope . לדוגמה:

    אינטרנט v8

    provider.addScope('https://www.googleapis.com/auth/contacts.readonly');

    אינטרנט v9

    provider.addScope('https://www.googleapis.com/auth/contacts.readonly');
    עיין בתיעוד ספק האימות .
  3. אופציונלי : כדי למקם את זרימת ה- OAuth של הספק לשפה המועדפת על המשתמש מבלי להעביר במפורש את פרמטרי ה- OAuth המותאמים אישית, עדכן את קוד השפה במופע Auth לפני שתתחיל את זרימת OAuth. לדוגמה:

    אינטרנט v8

    firebase.auth().languageCode = 'it';
    // To apply the default browser preference instead of explicitly setting it.
    // firebase.auth().useDeviceLanguage();

    אינטרנט v9

    import { getAuth } from "firebase/auth";
    
    const auth = getAuth();
    auth.languageCode = 'it';
    // To apply the default browser preference instead of explicitly setting it.
    // firebase.auth().useDeviceLanguage();
  4. אופציונלי : ציין פרמטרים נוספים של ספק OAuth המותאם אישית שברצונך לשלוח עם בקשת OAuth. כדי להוסיף פרמטר מותאם אישית, התקשר ל- setCustomParameters לספק האתחול עם אובייקט המכיל את המפתח כמפורט בתיעוד ספק ה- OAuth והערך המתאים. לדוגמה:

    אינטרנט v8

    provider.setCustomParameters({
      'login_hint': 'user@example.com'
    });

    אינטרנט v9

    provider.setCustomParameters({
      'login_hint': 'user@example.com'
    });
    פרמטרי OAuth הנדרשים שמורים אינם מורשים ויתעלם מהם. לפרטים נוספים, עיין בהפניה של ספק האימות .
  5. אמת באמצעות Firebase באמצעות אובייקט הספק של Google. תוכל להנחות את המשתמשים שלך להיכנס באמצעות חשבונות Google שלהם על ידי פתיחת חלון קופץ או על ידי הפניה מחדש לדף הכניסה. שיטת ההפניה עדיפה במכשירים ניידים.
    • כדי להיכנס באמצעות חלון קופץ, התקשר ל- signInWithPopup :

      אינטרנט v8

      firebase.auth()
        .signInWithPopup(provider)
        .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;
          // The email of the user's account used.
          var email = error.email;
          // The firebase.auth.AuthCredential type that was used.
          var credential = error.credential;
          // ...
        });

      אינטרנט v9

      import { getAuth, signInWithPopup, GoogleAuthProvider } from "firebase/auth";
      
      const auth = getAuth();
      signInWithPopup(auth, provider)
        .then((result) => {
          // This gives you a Google Access Token. You can use it to access the Google API.
          const credential = GoogleAuthProvider.credentialFromResult(result);
          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;
          // The email of the user's account used.
          const email = error.email;
          // The AuthCredential type that was used.
          const credential = GoogleAuthProvider.credentialFromError(error);
          // ...
        });
      שימו לב גם שתוכלו לאחזר את אסימון ה- OAuth של ספקית Google שבו ניתן לאסוף נתונים נוספים באמצעות ממשקי ה- API של Google.

      זה גם המקום בו תוכלו לתפוס ולטפל בשגיאות. לקבלת רשימה של קודי שגיאה, עיין במסמכי ההפניה לאימות .

    • כדי להיכנס על ידי הפניה לדף הכניסה, התקשר ל- signInWithRedirect :

      אינטרנט v8

      firebase.auth().signInWithRedirect(provider);

      אינטרנט v9

      import { getAuth, signInWithRedirect } from "firebase/auth";
      
      const auth = getAuth();
      signInWithRedirect(auth, provider);
      לאחר מכן תוכל גם לאחזר את אסימון ה- OAuth של ספק Google על ידי התקשרות ל- getRedirectResult כאשר הדף שלך נטען:

      אינטרנט v8

      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;
          // The email of the user's account used.
          var email = error.email;
          // The firebase.auth.AuthCredential type that was used.
          var credential = error.credential;
          // ...
        });

      אינטרנט v9

      import { getAuth, getRedirectResult, GoogleAuthProvider } from "firebase/auth";
      
      const auth = getAuth();
      getRedirectResult(auth)
        .then((result) => {
          // This gives you a Google Access Token. You can use it to access Google APIs.
          const credential = GoogleAuthProvider.credentialFromResult(result);
          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;
          // The email of the user's account used.
          const email = error.email;
          // The AuthCredential type that was used.
          const credential = GoogleAuthProvider.credentialFromError(error);
          // ...
        });
      זה גם המקום בו תוכלו לתפוס ולטפל בשגיאות. לקבלת רשימה של קודי שגיאה, עיין במסמכי הפניה לאימות .

אמת עם Firebase בתוסף Chrome

אם אתה בונה אפליקציית תוספים ל- Chrome, עליך להוסיף את מזהה התוסף שלך ל- Chrome:

  1. פתח את הפרויקט שלך במסוף Firebase .
  2. במקטע אימות , פתח את דף שיטת הכניסה .
  3. הוסף URI כמו הבא לרשימת התחומים המורשים:
    chrome-extension://CHROME_EXTENSION_ID

רק פעולות קופצות ( signInWithPopup ו- linkWithPopup ) זמינות linkWithPopup Chrome, שכן סיומות Chrome אינן יכולות להשתמש בהפניות מחדש של HTTP. עליך להתקשר לשיטות אלה מתסריט רקע ולא מקופץ לפעולה בדפדפן, מכיוון שקופץ האימות יבטל את חלון הקופץ של פעולת הדפדפן.

בקובץ המניפסט של תוסף Chrome שלך ​​הקפד להוסיף את כתובת האתר https://apis.google.com לרשימת ההיתרים content_security_policy .

הצעדים הבאים

לאחר שמשתמש נכנס בפעם הראשונה, נוצר חשבון משתמש חדש ומקושר לאישורים - כלומר שם המשתמש והסיסמה, מספר הטלפון או פרטי ספק האימות - המשתמש נכנס איתו. חשבון חדש זה מאוחסן כחלק מפרויקט Firebase שלך, וניתן להשתמש בו לזיהוי משתמש בכל אפליקציה בפרויקט שלך, ללא קשר לאופן בו המשתמש נכנס.

  • באפליקציות שלך, הדרך המומלצת לדעת את סטטוס האימות של המשתמש שלך היא להגדיר משקיפה על אובייקט Auth . לאחר מכן תוכל לקבל את פרטי הפרופיל הבסיסיים של User מאובייקט User . ראה ניהול משתמשים .

  • במסד הנתונים שלך בזמן אמת של Firebase ובכללי האבטחה של אחסון בענן, אתה יכול לקבל את מזהה המשתמש הייחודי של המשתמש auth ממשתנה auth , ולהשתמש בו כדי לשלוט לאילו נתונים המשתמש יכול לגשת.

באפשרותך לאפשר למשתמשים להיכנס לאפליקציה שלך באמצעות ספקי אימות מרובים על ידי קישור אישורי ספק האימות לחשבון משתמש קיים.

כדי לצאת מהמשתמש, התקשר ל- signOut :

אינטרנט v8

firebase.auth().signOut().then(() => {
  // Sign-out successful.
}).catch((error) => {
  // An error happened.
});

אינטרנט v9

import { getAuth, signOut } from "firebase/auth";

const auth = getAuth();
signOut(auth).then(() => {
  // Sign-out successful.
}).catch((error) => {
  // An error happened.
});