Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

الهوية الموحدة وتسجيل الدخول الاجتماعي

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

المصادقة الاجتماعية عبارة عن تدفق مصادقة متعدد الخطوات ، مما يسمح لك بتسجيل دخول مستخدم إلى حساب أو ربطه بحساب موجود.

تدعم كل من الأنظمة الأساسية الأصلية والويب إنشاء بيانات اعتماد يمكن بعد ذلك تمريرها إلى أساليب signInWithCredential أو linkWithCredential . بدلاً من ذلك ، على منصات الويب ، يمكنك تشغيل عملية المصادقة عبر نافذة منبثقة أو إعادة توجيه.

جوجل

يتم إعداد معظم التهيئة بالفعل عند استخدام تسجيل الدخول إلى Google مع Firebase ، ومع ذلك فأنت بحاجة إلى التأكد من تهيئة مفتاح SHA1 بجهازك للاستخدام مع Android. يمكنك معرفة كيفية إنشاء المفتاح في وثائق المصادقة .

تأكد من تمكين موفر تسجيل الدخول "Google" على Firebase Console .

إذا قام المستخدم بتسجيل الدخول باستخدام Google ، فبعد تسجيل حساب يدويًا بالفعل ، سيتغير مزود المصادقة الخاص به تلقائيًا إلى Google ، نظرًا لمفهوم Firebase Authentications لموفري خدمات موثوق بهم. يمكنك معرفة المزيد عن هذا هنا .

iOS + و Android

في الأنظمة الأساسية الأصلية ، يلزم وجود مكتبة تابعة لجهة خارجية لتشغيل تدفق المصادقة.

قم بتثبيت المكوّن الإضافي 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);
}

ألعاب جوجل بلاي

يمكنك مصادقة المستخدمين في لعبة Android باستخدام تسجيل الدخول إلى Play Games.

ذكري المظهر

اتبع التعليمات الخاصة بإعداد Google على Android ، ثم قم بتهيئة خدمات ألعاب Play باستخدام معلومات تطبيق 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 Developer واتبع عملية الإعداد لتمكين تسجيل الدخول إلى Facebook.

تأكد من تمكين موفر تسجيل الدخول "Facebook" على Firebase Console . مع معرف تطبيق Facebook والمجموعة السرية.

iOS + و Android

على الأنظمة الأساسية الأصلية ، يلزم وجود مكتبة تابعة لجهة خارجية لتثبيت Facebook SDK وتشغيل تدفق المصادقة.

قم بتثبيت المكون الإضافي flutter_facebook_auth .

ستحتاج إلى اتباع الخطوات الواردة في وثائق البرنامج المساعد للتأكد من تهيئة كل من Android و iOS Facebook SDKs بشكل صحيح. بمجرد الانتهاء ، قم بتشغيل تدفق تسجيل الدخول ، وإنشاء بيانات اعتماد Facebook وتسجيل دخول المستخدم:

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);
}

الويب

على الويب ، توفر حزمة Firebase SDK دعمًا للتعامل مع تدفق المصادقة تلقائيًا باستخدام تفاصيل تطبيق Facebook المتوفرة في وحدة تحكم Firebase. فمثلا:

قم بإنشاء موفر Facebook ، مع توفير أي نطاق إذن إضافي ترغب في الحصول عليه من المستخدم.

تأكد من إضافة OAuth لإعادة توجيه URI من وحدة تحكم Firebase باعتباره OAuth Redirect URI صالحًا في تطبيق Facebook الخاص بك.

FacebookAuthProvider facebookProvider = FacebookAuthProvider();

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

قم بتوفير بيانات الاعتماد للأسلوب signInWithPopup . سيؤدي هذا إلى ظهور نافذة جديدة تطالب المستخدم بتسجيل الدخول إلى تطبيق Facebook الخاص بك:

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 +

قبل أن تبدأ ، قم بتكوين Sign In with Apple وتمكين Apple كموفر تسجيل دخول .

بعد ذلك ، تأكد من أن تطبيقات Runner الخاصة بك بها إمكانية "تسجيل الدخول باستخدام Apple".

ذكري المظهر

قبل أن تبدأ ، قم بتكوين Sign In with Apple وتمكين Apple كموفر تسجيل دخول .

الويب

قبل أن تبدأ ، قم بتكوين Sign In with 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);
  }
}

مايكروسوفت

iOS +

قبل البدء في تكوين Microsoft Login لـ iOS وإضافة مخططات URL المخصصة إلى Runner (الخطوة 1) .

ذكري المظهر

قبل أن تبدأ ، قم بتكوين تسجيل الدخول إلى Microsoft لنظام Android .

لا تنس إضافة بصمة إصبع SHA-1 لتطبيقك.

الويب

قبل أن تبدأ ، قم بتكوين تسجيل الدخول إلى Microsoft للويب .

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 باستخدام مفتاح واجهة برمجة التطبيقات ومجموعة سر واجهة برمجة التطبيقات. تأكد من تعيين عنوان URI لإعادة توجيه Firebase OAuth (على سبيل المثال ، my-app-12345.firebaseapp.com/__/auth/handler) كعنوان URL لرد اتصال التفويض في صفحة إعدادات التطبيق في تهيئة تطبيق Twitter .

قد تحتاج أيضًا إلى طلب وصول مرتفع إلى واجهة برمجة التطبيقات اعتمادًا على تطبيقك .

iOS +

تحتاج إلى تكوين مخطط URL المخصص الخاص بك كما هو موضح في دليل 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);
  }
}

جيثب

تأكد من إعداد تطبيق OAuth من إعدادات مطور GitHub وتم تمكين موفر تسجيل الدخول "GitHub" على Firebase Console باستخدام معرف العميل والسرية ، مع تعيين عنوان URL لمعاودة الاتصال في تطبيق GitHub.

iOS + و Android

بالنسبة إلى الأنظمة الأساسية الأصلية ، تحتاج إلى إضافة google-services.json و GoogleService-Info.plist .

بالنسبة لنظام iOS ، أضف مخطط URL المخصص كما هو موضح في دليل iOS الخطوة 1.

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

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

الويب

على الويب ، توفر GitHub SDK دعمًا لمعالجة تدفق المصادقة تلقائيًا باستخدام تفاصيل تطبيق GitHub المتوفرة على وحدة تحكم Firebase. تأكد من إضافة عنوان URL لمعاودة الاتصال في وحدة تحكم 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 باستخدام مفتاح واجهة برمجة التطبيقات ومجموعة سر واجهة برمجة التطبيقات. تأكد أيضًا من تعيين عنوان URI لإعادة توجيه Firebase OAuth (على سبيل المثال ، my-app-12345.firebaseapp.com/__/auth/handler) على أنه عنوان URI لإعادة التوجيه في تكوين Yahoo Developer Network الخاص بالتطبيق.

iOS +

قبل أن تبدأ ، قم بتكوين Yahoo Login لـ iOS وأضف مخططات URL المخصصة إلى 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.signInAnonymous ()؛

final appleProvider = AppleAuthProvider () ؛

if (kIsWeb) {await FirebaseAuth.instance.currentUser؟ .linkWithPopup (appleProvider)؛

// يمكنك أيضًا استخدام linkWithRedirect } else {await FirebaseAuth.instance.currentUser؟ .linkWithProvider (appleProvider)؛ }

// تمت ترقية المستخدم المجهول الآن لتتمكن من الاتصال بـ Sign In With Apple ''

إعادة المصادقة مع الموفر

يمكن استخدام نفس النمط مع إعادة المصادقة مع 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