फ़ेडरेटेड आइडेंटिटी और सोशल साइन-इन

सामाजिक प्रमाणीकरण एक बहु-चरणीय प्रमाणीकरण प्रवाह है, जिसकी सहायता से आप उपयोगकर्ता को किसी खाते में प्रवेश कर सकते हैं या उसे किसी मौजूदा खाते से लिंक कर सकते हैं.

नेटिव प्लैटफ़ॉर्म और वेब, दोनों ही क्रेडेंशियल बनाने की सुविधा देते हैं, जिसे इसके बाद signInWithCredential या linkWithCredential तरीकों में पास किया जा सकता है. इसके अलावा, वेब प्लैटफ़ॉर्म पर पॉप-अप या रीडायरेक्ट के ज़रिए, पुष्टि करने की प्रोसेस को ट्रिगर किया जा सकता है.

Google

'Firebase के साथ Google साइन-इन' का इस्तेमाल करते समय ज़्यादातर कॉन्फ़िगरेशन पहले ही सेटअप कर लिए जाते हैं. हालांकि, आपको यह पक्का करना होगा कि आपकी मशीन की SHA1 कुंजी, Android के साथ इस्तेमाल करने के लिए कॉन्फ़िगर कर दी गई है. कुंजी जनरेट करने का तरीका जानने के लिए, पुष्टि करने से जुड़े दस्तावेज़ देखें.

पक्का करें कि Firebase कंसोल पर "Google" में साइन इन करने की सेवा देने वाली कंपनी चालू हो.

अगर आपका उपयोगकर्ता, मैन्युअल तरीके से खाते को रजिस्टर करने के बाद Google से साइन इन करता है, तो पुष्टि करने वाली सेवा देने वाली कंपनी, अपने-आप Google पर बदल जाएगी. ऐसा भरोसेमंद कंपनियों के Firebase से पुष्टि करने के सिद्धांत की वजह से किया जाएगा. इस बारे में ज़्यादा जानने के लिए यहां जाएं.

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

Google Play Games

Play Games में साइन इन की सुविधा का इस्तेमाल करके, अपने Android गेम के उपयोगकर्ताओं की पुष्टि की जा सकती है.

Android

Android पर Google सेटअप करने के निर्देशों का पालन करें. इसके बाद, अपने Firebase ऐप्लिकेशन की जानकारी के साथ Play की गेम सेवाएं कॉन्फ़िगर करें.

इन चीज़ों से साइन-इन फ़्लो ट्रिगर होगा, नया क्रेडेंशियल बनाया जाएगा, और उपयोगकर्ता में साइन इन किया जाएगा:

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

शुरू करने से पहले, अपना Facebook डेवलपर ऐप्लिकेशन सेटअप करें और Facebook लॉगिन चालू करने के लिए, सेटअप करने की प्रोसेस का पालन करें.

पक्का करें कि Firebase कंसोल पर, "Facebook" साइन इन सेवा देने वाली कंपनी चालू है. इसके लिए, Facebook ऐप्लिकेशन आईडी और सीक्रेट सेट करें.

iOS+ और Android

नेटिव प्लैटफ़ॉर्म पर, Facebook SDK टूल इंस्टॉल करने और पुष्टि करने के फ़्लो को ट्रिगर करने के लिए, तीसरे पक्ष की लाइब्रेरी ज़रूरी है.

flutter_facebook_auth प्लगिन इंस्टॉल करें.

यह पक्का करने के लिए कि Android और iOS, Facebook SDK टूल, दोनों सही तरीके से शुरू किए गए हैं, आपको प्लगिन के दस्तावेज़ में दिया गया तरीका अपनाना होगा. यह प्रोसेस पूरी होने के बाद, साइन-इन फ़्लो को ट्रिगर करें, 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 टूल, Firebase कंसोल पर दिए गए Facebook ऐप्लिकेशन की जानकारी का इस्तेमाल करके, पुष्टि करने के फ़्लो को अपने-आप मैनेज करने के लिए सहायता उपलब्ध कराता है. उदाहरण के लिए:

एक Facebook प्रोवाइडर बनाएं. साथ ही, उपयोगकर्ता से अनुमति का दायरा उपलब्ध कराएं.

पक्का करें कि Firebase कंसोल से OAuth रीडायरेक्ट यूआरआई को आपके Facebook ऐप्लिकेशन में मान्य OAuth रीडायरेक्ट यूआरआई के तौर पर जोड़ा गया है.

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

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 साइन इन से एक ऑथराइज़ेशन कोड दिखता है. इसका इस्तेमाल, revokeTokenWithAuthorizationCode() API का इस्तेमाल करके, Apple के ऑथराइज़ेशन टोकन को रद्द करने के लिए किया जा सकता है.

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

Microsoft

iOS और उसके बाद के वर्शन

iOS के लिए Microsoft लॉगिन कॉन्फ़िगर करने से पहले और अपने रनर (पहला चरण) में कस्टम यूआरएल स्कीम जोड़ने से पहले.

Android

Android के लिए Microsoft लॉगिन कॉन्फ़िगर करें शुरू करने से पहले.

अपने ऐप्लिकेशन का 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 कंसोल पर, एपीआई पासकोड और एपीआई सीक्रेट सेट के साथ, "Twitter" में साइन इन करने की सेवा देने वाली कंपनी चालू हो. पक्का करें कि आपका Firebase OAuth रीडायरेक्ट यूआरआई (उदाहरण के लिए, my-app-12345.firebaseapp.com/__/auth/handler) आपके Twitter ऐप्लिकेशन के कॉन्फ़िगरेशन पर, ऐप्लिकेशन के सेटिंग पेज में आपके ऑथराइज़ेशन कॉलबैक के यूआरएल के तौर पर सेट हो.

आपको अपने ऐप्लिकेशन के हिसाब से, एपीआई के ऐक्सेस को बेहतर करने के लिए भी अनुरोध करना पड़ सकता है.

iOS और उसके बाद के वर्शन

आपको अपनी कस्टम यूआरएल स्कीम को, iOS गाइड के पहले चरण में बताए गए तरीके के हिसाब से कॉन्फ़िगर करना होगा.

Android

अगर आपने अभी तक अपने ऐप्लिकेशन का 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

पक्का करें कि आपने अपनी GitHub डेवलपर सेटिंग से OAuth ऐप्लिकेशन सेट अप किया है. साथ ही, यह भी पक्का करें कि Firebase कंसोल पर, क्लाइंट आईडी और सीक्रेट के साथ "GitHub" साइन-इन सेवा चालू हो. साथ ही, GitHub ऐप्लिकेशन में कॉलबैक यूआरएल सेट किया गया हो.

iOS+ और Android

नेटिव प्लैटफ़ॉर्म के लिए, आपको google-services.json और GoogleService-Info.plist जोड़ना होगा.

iOS के लिए, पहले चरण में iOS गाइड में बताए गए तरीके के मुताबिक कस्टम यूआरएल स्कीम जोड़ें.

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

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

वेब

वेब पर, GitHub SDK टूल, Firebase कंसोल पर दिए गए GitHub ऐप्लिकेशन की जानकारी का इस्तेमाल करके, पुष्टि करने के फ़्लो को अपने-आप मैनेज करने के लिए सहायता उपलब्ध कराता है. पक्का करें कि Firebase कंसोल में कॉलबैक यूआरएल को डेवलपर कंसोल पर, आपके 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 कंसोल पर, एपीआई पासकोड और एपीआई सीक्रेट सेट के साथ, "Yahoo" साइन-इन की सेवा देने वाली कंपनी चालू हो. यह भी पक्का करें कि आपका Firebase OAuth रीडायरेक्ट यूआरआई (उदाहरण के लिए, my-app-12345.firebaseapp.com/__/auth/handler) आपके ऐप्लिकेशन के Yahoo Developer Network के कॉन्फ़िगरेशन में रीडायरेक्ट यूआरआई के तौर पर सेट हो.

iOS और उसके बाद के वर्शन

शुरू करने से पहले, iOS के लिए Yahoo लॉगिन कॉन्फ़िगर करें और अपने रनर (पहला चरण) में कस्टम यूआरएल स्कीम जोड़ें.

Android

शुरू करने से पहले, Android के लिए Yahoo लॉगिन को कॉन्फ़िगर करें.

अपने ऐप्लिकेशन का 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();

फ़ाइनल appleProvider = AppleAuthProvider();

अगर (kIsWeb) { await FirebaseAuth.instance.currentUser?.linkWithPopup(appleProvider);

// आप linkWithRedirect का भी इस्तेमाल कर सकते हैं } { await FirebaseAuth.instance.currentUser?.linkWithProvider(appleProvider); }

// अब उपयोगकर्ता की पहचान छिपी हुई है. उसे अपग्रेड कर दिया गया है, ताकि साइन इन 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