זהות מאוחדת & כניסה חברתית

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

גם פלטפורמות מקוריות וגם אינטרנט תומכים ביצירת אישור שניתן להעביר לשיטות signInWithCredential או linkWithCredential . לחלופין בפלטפורמות אינטרנט, אתה יכול להפעיל את תהליך האימות באמצעות חלון קופץ או הפניה מחדש.

גוגל

רוב התצורה כבר מוגדרת בעת שימוש ב-Google Sign-In עם Firebase, אולם עליך לוודא שמפתח SHA1 של המחשב שלך הוגדר לשימוש עם Android. אתה יכול לראות כיצד ליצור את המפתח בתיעוד האימות .

ודא שספק הכניסה של "Google" מופעל ב- Firebase Console .

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

iOS+ ואנדרואיד

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

התקן את הפלאגין הרשמי google_sign_in .

לאחר ההתקנה, הפעל את זרימת הכניסה וצור אישור חדש:

import 'package:google_sign_in/google_sign_in.dart';

Future<UserCredential> signInWithGoogle() async {
  // Trigger the authentication flow
  final GoogleSignInAccount? googleUser = await GoogleSignIn().signIn();

  // Obtain the auth details from the request
  final GoogleSignInAuthentication? googleAuth = await googleUser?.authentication;

  // Create a new credential
  final credential = GoogleAuthProvider.credential(
    accessToken: googleAuth?.accessToken,
    idToken: googleAuth?.idToken,
  );

  // Once signed in, return the UserCredential
  return await FirebaseAuth.instance.signInWithCredential(credential);
}

אינטרנט

באינטרנט, Firebase SDK מספק תמיכה לטיפול אוטומטי בזרימת האימות באמצעות פרויקט Firebase שלך. לדוגמה:

צור ספק אישור של Google, המספק כל היקף הרשאה נוסף שתרצה לקבל מהמשתמש:

GoogleAuthProvider googleProvider = GoogleAuthProvider();

googleProvider.addScope('https://www.googleapis.com/auth/contacts.readonly');
googleProvider.setCustomParameters({
  'login_hint': 'user@example.com'
});

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

Future<UserCredential> signInWithGoogle() async {
  // Create a new provider
  GoogleAuthProvider googleProvider = GoogleAuthProvider();

  googleProvider.addScope('https://www.googleapis.com/auth/contacts.readonly');
  googleProvider.setCustomParameters({
    'login_hint': 'user@example.com'
  });

  // Once signed in, return the UserCredential
  return await FirebaseAuth.instance.signInWithPopup(googleProvider);

  // Or use signInWithRedirect
  // return await FirebaseAuth.instance.signInWithRedirect(googleProvider);
}

Google Play משחקים

אתה יכול לאמת משתמשים במשחק Android שלך באמצעות כניסה ל-Play Games.

דְמוּי אָדָם

עקוב אחר ההוראות להגדרת Google ב-Android, ולאחר מכן הגדר את שירותי Play Games עם פרטי אפליקציית Firebase שלך .

הדברים הבאים יפעילו את זרימת הכניסה, תיצור אישור חדש וייכנס למשתמש:

final googleUser = await GoogleSignIn(
  signInOption: SignInOption.games,
).signIn();

final googleAuth = await googleUser?.authentication;

if (googleAuth != null) {
  // Create a new credential
  final credential = GoogleAuthProvider.credential(
    accessToken: googleAuth.accessToken,
    idToken: googleAuth.idToken,
  );

  // Once signed in, return the UserCredential
  await _auth.signInWithCredential(credential);
}

פייסבוק

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

ודא שספק הכניסה "Facebook" מופעל ב- Firebase Console . עם ה-Facebook App ID ו-Secret.

iOS+ ואנדרואיד

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

התקן את הפלאגין flutter_facebook_auth .

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

import 'package:flutter_facebook_auth/flutter_facebook_auth.dart';

Future<UserCredential> signInWithFacebook() async {
  // Trigger the sign-in flow
  final LoginResult loginResult = await FacebookAuth.instance.login();

  // Create a credential from the access token
  final OAuthCredential facebookAuthCredential = FacebookAuthProvider.credential(loginResult.accessToken.token);

  // Once signed in, return the UserCredential
  return FirebaseAuth.instance.signInWithCredential(facebookAuthCredential);
}

אינטרנט

באינטרנט, ה-SDK של Firebase מספק תמיכה לטיפול אוטומטי בזרימת האימות באמצעות פרטי אפליקציית Facebook המסופקים במסוף Firebase. לדוגמה:

צור ספק פייסבוק, המספק כל היקף הרשאה נוסף שתרצה לקבל מהמשתמש.

ודא ש-URI ההפניה מחדש של OAuth ממסוף Firebase נוסף כ-URI להפניה מחדש של OAuth באפליקציית Facebook שלך.

FacebookAuthProvider facebookProvider = FacebookAuthProvider();

facebookProvider.addScope('email');
facebookProvider.setCustomParameters({
  'display': 'popup',
});

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

Future<UserCredential> signInWithFacebook() async {
  // Create a new provider
  FacebookAuthProvider facebookProvider = FacebookAuthProvider();

  facebookProvider.addScope('email');
  facebookProvider.setCustomParameters({
    'display': 'popup',
  });

  // Once signed in, return the UserCredential
  return await FirebaseAuth.instance.signInWithPopup(facebookProvider);

  // Or use signInWithRedirect
  // return await FirebaseAuth.instance.signInWithRedirect(facebookProvider);
}

תפוח עץ

iOS+

לפני שתתחיל, הגדר את כניסה עם Apple והפעל את Apple כספק כניסה .

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

דְמוּי אָדָם

לפני שתתחיל, הגדר את כניסה עם Apple והפעל את Apple כספק כניסה .

אינטרנט

לפני שתתחיל, הגדר את כניסה עם Apple והפעל את Apple כספק כניסה .

import 'package:firebase_auth/firebase_auth.dart';

Future<UserCredential> signInWithApple() async {
  final appleProvider = AppleAuthProvider();
  if (kIsWeb) {
    await FirebaseAuth.instance.signInWithPopup(appleProvider);
  } else {
    await FirebaseAuth.instance.signInWithProvider(appleProvider);
  }
}

בטל אסימוני אישור של Apple

כניסה של Apple בפלטפורמות של Apple מחזירה קוד הרשאה שניתן להשתמש בו כדי לבטל את אסימון האישור של Apple באמצעות ממשק API revokeTokenWithAuthorizationCode() .

import 'package:firebase_auth/firebase_auth.dart';

Future<UserCredential> signInWithApple() async {
  final appleProvider = AppleAuthProvider();

  UserCredential userCredential = await FirebaseAuth.instance.signInWithPopup(appleProvider);
  // Keep the authorization code returned from Apple platforms
  String? authCode = userCredential.additionalUserInfo?.authorizationCode;
  // Revoke Apple auth token
  await FirebaseAuth.instance.revokeTokenWithAuthorizationCode(authCode!);
}

מיקרוסופט

iOS+

לפני שתתחיל להגדיר את התחברות של Microsoft עבור iOS והוסף את סכימות ה-URL המותאמות אישית ל-Runner שלך (שלב 1) .

דְמוּי אָדָם

לפני שתתחיל להגדיר את התחברות של Microsoft עבור אנדרואיד .

אל תשכח להוסיף את טביעת האצבע SHA-1 של האפליקציה שלך.

אינטרנט

לפני שתתחיל להגדיר את Microsoft Login for Web .

import 'package:firebase_auth/firebase_auth.dart';

Future<UserCredential> signInWithMicrosoft() async {
  final microsoftProvider = MicrosoftAuthProvider();
  if (kIsWeb) {
    await FirebaseAuth.instance.signInWithPopup(microsoftProvider);
  } else {
    await FirebaseAuth.instance.signInWithProvider(microsoftProvider);
  }
}

טוויטר

ודא שספק הכניסה "Twitter" מופעל ב- Firebase Console עם ערכת מפתח API ו-API סוד. ודא URI להפניה מחדש של Firebase OAuth שלך (למשל my-app-12345.firebaseapp.com/__/auth/handler) מוגדר ככתובת ה-URL שלך להתקשרות חוזרת של הרשאה בדף ההגדרות של האפליקציה שלך בתצורה של אפליקציית Twitter שלך.

ייתכן שתצטרך גם לבקש גישת API מוגברת בהתאם לאפליקציה שלך .

iOS+

עליך להגדיר את סכימת כתובת האתר המותאמת אישית שלך כמתואר במדריך iOS שלב 1 .

דְמוּי אָדָם

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

אינטרנט

עובד מחוץ לקופסה.

import 'package:firebase_auth/firebase_auth.dart';

Future<void> _signInWithTwitter() async {
  TwitterAuthProvider twitterProvider = TwitterAuthProvider();

  if (kIsWeb) {
    await FirebaseAuth.instance.signInWithPopup(twitterProvider);
  } else {
    await FirebaseAuth.instance.signInWithProvider(twitterProvider);
  }
}

GitHub

ודא שהגדרת אפליקציית OAuth מהגדרות המפתחים של GitHub ושספק הכניסה "GitHub" מופעל ב- Firebase Console כאשר מזהה הלקוח והסוד מוגדרים, כאשר כתובת האתר להתקשרות חוזרת מוגדרת באפליקציית GitHub.

iOS+ ואנדרואיד

עבור פלטפורמות מקוריות, עליך להוסיף את google-services.json ו- GoogleService-Info.plist .

עבור iOS, הוסף את סכימת כתובת האתר המותאמת אישית כפי שמתואר במדריך iOS שלב 1.

Future<UserCredential> signInWithGitHub() async {
  // Create a new provider
  GithubAuthProvider githubProvider = GithubAuthProvider();

  return await FirebaseAuth.instance.signInWithProvider(githubProvider);
}

אינטרנט

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

לדוגמה:

צור ספק GitHub וספק את האישור לשיטת signInWithPopup . פעולה זו תפעיל חלון חדש שינחה את המשתמש להיכנס לאפליקציית GitHub שלך:

Future<UserCredential> signInWithGitHub() async {
  // Create a new provider
  GithubAuthProvider githubProvider = GithubAuthProvider();

  // Once signed in, return the UserCredential
  return await FirebaseAuth.instance.signInWithPopup(githubProvider);

  // Or use signInWithRedirect
  // return await FirebaseAuth.instance.signInWithRedirect(githubProvider);
}

יאהו

ודא שספק הכניסה "Yahoo" מופעל ב- Firebase Console עם ערכת מפתח API ו-API סוד. ודא גם שה-URI להפניה מחדש של Firebase OAuth (למשל my-app-12345.firebaseapp.com/__/auth/handler) מוגדר כ-URI להפניה מחדש בתצורת Yahoo Developer Network של האפליקציה שלך.

iOS+

לפני שתתחיל, הגדר את Yahoo Login עבור iOS והוסף את סכימות כתובת האתר המותאמות אישית ל-Runner שלך (שלב 1) .

דְמוּי אָדָם

לפני שתתחיל, הגדר את Yahoo Login עבור Android .

אל תשכח להוסיף את טביעת האצבע SHA-1 של האפליקציה שלך.

אינטרנט

עובד מחוץ לקופסה.

import 'package:firebase_auth/firebase_auth.dart';

Future<UserCredential> signInWithYahoo() async {
  final yahooProvider = YahooAuthProvider();
  if (kIsWeb) {
    await _auth.signInWithPopup(yahooProvider);
  } else {
    await _auth.signInWithProvider(yahooProvider);
  }
}

שימוש באסימון הגישה של OAuth

על ידי שימוש ב-AuthProvider, תוכל לאחזר את אסימון הגישה המשויך לספק על ידי הגשת הבקשה הבאה.

final appleProvider = AppleAuthProvider();

final user = await FirebaseAuth.instance.signInWithProvider(appleProvider);
final accessToken = user.credential?.accessToken;

// You can send requests with the `accessToken`

קישור ספק אימות

אם ברצונך לקשר ספק למשתמש נוכחי, תוכל להשתמש בשיטה הבאה: ```dart await FirebaseAuth.instance.signInAnonymously();

final appleProvider = AppleAuthProvider();

if (kIsWeb) { await FirebaseAuth.instance.currentUser?.linkWithPopup(appleProvider);

// אתה יכול גם להשתמש linkWithRedirect } אחרת { await FirebaseAuth.instance.currentUser?.linkWithProvider(appleProvider); }

// אתה משתמש אנונימי משודרג כעת כדי להיות מסוגל להתחבר עם כניסה עם אפל ```

אימות מחדש עם הספק

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

final appleProvider = AppleAuthProvider();

if (kIsWeb) {
  await FirebaseAuth.instance.currentUser?.reauthenticateWithPopup(appleProvider);

  // Or you can reauthenticate with a redirection
  // await FirebaseAuth.instance.currentUser?.reauthenticateWithRedirect(appleProvider);
} else {
  await FirebaseAuth.instance.currentUser?.reauthenticateWithProvider(appleProvider);
}

// You can now perform sensitive operations