אתם יכולים לשלב אימות של טוויטר באפליקציה שלכם כדי לאפשר למשתמשים להתאמת ב-Firebase באמצעות חשבונות הטוויטר שלהם. אפשר לשלב אימות של טוויטר באמצעות Firebase SDK כדי לבצע את תהליך הכניסה, או לבצע את תהליך Twitter OAuth באופן ידני ולהעביר את אסימון הגישה והסוד שמתקבלים ל-Firebase.
לפני שמתחילים
- איך מוסיפים את Firebase לפרויקט ב-JavaScript
- במסוף Firebase, עוברים אל Security (אבטחה) > Authentication (אימות).
- בכרטיסייה שיטת התחברות, מפעילים את ספק הכניסה Twitter.
-
מוסיפים את מפתח ה-API ואת סוד ה-API ממסוף המפתחים של הספק להגדרות הספק:
- רושמים את האפליקציה כאפליקציית מפתחים בטוויטר ומקבלים את מפתח ה-API ואת הסוד של ה-API של האפליקציה ב-OAuth.
-
מוודאים שכתובת ה-URI להפניה אוטומטית ב-OAuth ב-Firebase (לדוגמה,
my-app-12345.firebaseapp.com/__/auth/handler) מוגדרת ככתובת ה-URL של הקריאה החוזרת לאימות בדף ההגדרות של האפליקציה בהגדרות האפליקציה שלכם בטוויטר.
- לוחצים על שמירה.
טיפול בתהליך הכניסה באמצעות Firebase SDK
אם אתם מפתחים אפליקציית אינטרנט, הדרך הכי קלה לאמת את המשתמשים ב-Firebase באמצעות חשבונות הטוויטר שלהם היא לטפל בתהליך הכניסה באמצעות Firebase JavaScript SDK. (אם רוצים לאמת משתמש ב-Node.js או בסביבה אחרת שאינה דפדפן, צריך לטפל בתהליך הכניסה באופן ידני).
כדי לטפל בתהליך הכניסה באמצעות Firebase JavaScript SDK, מבצעים את השלבים הבאים:
- יוצרים מופע של אובייקט הספק של טוויטר:
Web
import { TwitterAuthProvider } from "firebase/auth"; const provider = new TwitterAuthProvider();
Web
var provider = new firebase.auth.TwitterAuthProvider();
- אופציונלי: כדי להתאים את תהליך OAuth של הספק לשפה המועדפת של המשתמש בלי להעביר במפורש את הפרמטרים הרלוונטיים של OAuth בהתאמה אישית, מעדכנים את קוד השפה במופע Auth לפני שמתחילים את תהליך OAuth. לדוגמה:
Web
import { getAuth } from "firebase/auth"; const auth = getAuth(); auth.languageCode = 'it'; // To apply the default browser preference instead of explicitly setting it. // auth.useDeviceLanguage();
Web
firebase.auth().languageCode = 'it'; // To apply the default browser preference instead of explicitly setting it. // firebase.auth().useDeviceLanguage();
- אופציונלי: מציינים פרמטרים נוספים של ספק OAuth מותאם אישית שרוצים לשלוח עם בקשת ה-OAuth. כדי להוסיף פרמטר בהתאמה אישית, קוראים ל-
setCustomParametersבספק שאותחל עם אובייקט שמכיל את המפתח כפי שצוין במסמכי התיעוד של ספק OAuth ואת הערך התואם. לדוגמה:אסור להשתמש בפרמטרים שמורים של OAuth, והמערכת תתעלם מהם. פרטים נוספים זמינים במאמר בנושא ספקי אימות.Web
provider.setCustomParameters({ 'lang': 'es' });
Web
provider.setCustomParameters({ 'lang': 'es' });
- מתבצע אימות ב-Firebase באמצעות אובייקט הספק של Twitter. אתם יכולים לבקש מהמשתמשים להיכנס לחשבון שלהם ב-Twitter על ידי פתיחת חלון קופץ או על ידי הפניה לדף הכניסה. שיטת ההפניה האוטומטית מועדפת במכשירים ניידים.
- כדי להיכנס לחשבון באמצעות חלון קופץ, מתקשרים אל
signInWithPopup:שימו לב שאפשר גם לאחזר את אסימון ה-OAuth של ספק Twitter, שבו אפשר להשתמש כדי לאחזר נתונים נוספים באמצעות ממשקי ה-API של Twitter.Web
import { getAuth, signInWithPopup, TwitterAuthProvider } from "firebase/auth"; const auth = getAuth(); signInWithPopup(auth, provider) .then((result) => { // This gives you a the Twitter OAuth 1.0 Access Token and Secret. // You can use these server side with your app's credentials to access the Twitter API. const credential = TwitterAuthProvider.credentialFromResult(result); const token = credential.accessToken; const secret = credential.secret; // The signed-in user info. const user = result.user; // IdP data available using getAdditionalUserInfo(result) // ... }).catch((error) => { // Handle Errors here. const errorCode = error.code; const errorMessage = error.message; // The email of the user's account used. const email = error.customData.email; // The AuthCredential type that was used. const credential = TwitterAuthProvider.credentialFromError(error); // ... });
Web
firebase .auth() .signInWithPopup(provider) .then((result) => { /** @type {firebase.auth.OAuthCredential} */ var credential = result.credential; // This gives you a the Twitter OAuth 1.0 Access Token and Secret. // You can use these server side with your app's credentials to access the Twitter API. var token = credential.accessToken; var secret = credential.secret; // The signed-in user info. var user = result.user; // IdP data available in result.additionalUserInfo.profile. // ... }).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; // ... });
כאן גם אפשר לזהות ולטפל בשגיאות. רשימת קודי השגיאה זמינה במאמרי העזרה בנושא אימות.
- כדי להיכנס לחשבון באמצעות הפניה לדף הכניסה, קוראים ל-
signInWithRedirect: חשוב לפעול לפי השיטות המומלצות כשמשתמשים ב-signInWithRedirect.אחרי כן, אפשר גם לאחזר את אסימון ה-OAuth של ספק Twitter על ידי קריאה ל-Web
import { getAuth, signInWithRedirect } from "firebase/auth"; const auth = getAuth(); signInWithRedirect(auth, provider);
Web
firebase.auth().signInWithRedirect(provider);
getRedirectResultכשהדף נטען:כאן גם אפשר לזהות ולטפל בשגיאות. רשימת קודי השגיאה זמינה במאמרי העזרה בנושא אימות.Web
import { getAuth, getRedirectResult, TwitterAuthProvider } from "firebase/auth"; const auth = getAuth(); getRedirectResult(auth) .then((result) => { // This gives you a the Twitter OAuth 1.0 Access Token and Secret. // You can use these server side with your app's credentials to access the Twitter API. const credential = TwitterAuthProvider.credentialFromResult(result); const token = credential.accessToken; const secret = credential.secret; // ... // The signed-in user info. const user = result.user; // IdP data available using getAdditionalUserInfo(result) // ... }).catch((error) => { // Handle Errors here. const errorCode = error.code; const errorMessage = error.message; // The email of the user's account used. const email = error.customData.email; // The AuthCredential type that was used. const credential = TwitterAuthProvider.credentialFromError(error); // ... });
Web
firebase.auth() .getRedirectResult() .then((result) => { if (result.credential) { /** @type {firebase.auth.OAuthCredential} */ var credential = result.credential; // This gives you a the Twitter OAuth 1.0 Access Token and Secret. // You can use these server side with your app's credentials to access the Twitter API. var token = credential.accessToken; var secret = credential.secret; // ... } // The signed-in user info. var user = result.user; // IdP data available in result.additionalUserInfo.profile. // ... }).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; // ... });
- כדי להיכנס לחשבון באמצעות חלון קופץ, מתקשרים אל
טיפול בתהליך הכניסה באופן ידני
אפשר גם לבצע אימות באמצעות Firebase באמצעות חשבון Twitter. לשם כך, צריך לטפל בתהליך הכניסה על ידי קריאה לנקודות הקצה של Twitter OAuth:
- מטמיעים את אימות הזהות של טוויטר באפליקציה בהתאם למסמכי העזרה למפתחים. בסיום תהליך הכניסה ל-Twitter, תקבלו אסימון גישה ל-OAuth וסוד OAuth.
- אם אתם צריכים להיכנס לאפליקציית Node.js, שלחו לאפליקציית Node.js את אסימון הגישה של OAuth ואת סוד OAuth.
- אחרי שהמשתמש מתחבר בהצלחה באמצעות Twitter, מחליפים את אסימון הגישה של OAuth ואת סוד ה-OAuth בפרטי כניסה ל-Firebase:
var credential = firebase.auth.TwitterAuthProvider.credential(token, secret);
- מבצעים אימות באמצעות Firebase עם פרטי הכניסה של Firebase:
Web
import { getAuth, signInWithCredential, FacebookAuthProvider } from "firebase/auth"; // Sign in with the credential from the Facebook user. const auth = getAuth(); signInWithCredential(auth, credential) .then((result) => { // Signed in const credential = FacebookAuthProvider.credentialFromResult(result); }) .catch((error) => { // Handle Errors here. const errorCode = error.code; const errorMessage = error.message; // The email of the user's account used. const email = error.customData.email; // The AuthCredential type that was used. const credential = FacebookAuthProvider.credentialFromError(error); // ... });
Web
// Sign in with the credential from the Facebook user. firebase.auth().signInWithCredential(credential) .then((result) => { // Signed in var credential = result.credential; // ... }) .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; // ... });
אימות באמצעות Firebase בתוסף ל-Chrome
אם אתם מפתחים אפליקציית תוסף ל-Chrome, כדאי לעיין במדריך למסמכים מחוץ למסך.
השלבים הבאים
אחרי שמשתמש נכנס לחשבון בפעם הראשונה, נוצר חשבון משתמש חדש שמקושר לפרטי הכניסה – כלומר, שם המשתמש והסיסמה, מספר הטלפון או פרטי ספק האימות – שבאמצעותם המשתמש נכנס לחשבון. החשבון החדש הזה מאוחסן כחלק מפרויקט Firebase, ואפשר להשתמש בו כדי לזהות משתמש בכל אפליקציה בפרויקט, בלי קשר לשיטת הכניסה של המשתמש.
-
הדרך המומלצת לדעת מה סטטוס האימות של המשתמש באפליקציות היא להגדיר אובייקט
Authשל צופה. אחרי זה אפשר לקבל את פרטי הפרופיל הבסיסיים של המשתמש מאובייקטUser. איך מנהלים משתמשים בFirebase Realtime Database ובCloud Storage כללי האבטחה, אפשר לקבל את מזהה המשתמש הייחודי של המשתמש המחובר מהמשתנה
auth, ולהשתמש בו כדי לקבוע לאילו נתונים המשתמש יכול לגשת.
אתם יכולים לאפשר למשתמשים להיכנס לאפליקציה שלכם באמצעות כמה ספקי אימות על ידי קישור פרטי הכניסה של ספק האימות לחשבון משתמש קיים.
כדי להוציא משתמש מהחשבון, מתקשרים אל
signOut:
Web
import { getAuth, signOut } from "firebase/auth"; const auth = getAuth(); signOut(auth).then(() => { // Sign-out successful. }).catch((error) => { // An error happened. });
Web
firebase.auth().signOut().then(() => { // Sign-out successful. }).catch((error) => { // An error happened. });