फ़ेडरेटेड पहचान और amp; सामाजिक साइन-इन

सामाजिक प्रमाणीकरण एक बहु-चरणीय प्रमाणीकरण प्रवाह है, जो आपको किसी उपयोगकर्ता को किसी खाते में साइन इन करने या उन्हें किसी मौजूदा खाते से जोड़ने की अनुमति देता है।

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

गूगल

फायरबेस के साथ Google साइन-इन का उपयोग करते समय अधिकांश कॉन्फ़िगरेशन पहले से ही सेटअप है, हालांकि आपको यह सुनिश्चित करना होगा कि आपकी मशीन की SHA1 कुंजी एंड्रॉइड के साथ उपयोग के लिए कॉन्फ़िगर की गई है। आप प्रमाणीकरण दस्तावेज़ में देख सकते हैं कि कुंजी कैसे उत्पन्न करें।

सुनिश्चित करें कि फायरबेस कंसोल पर "Google" साइन-इन प्रदाता सक्षम है।

यदि आपका उपयोगकर्ता मैन्युअल रूप से एक खाता पंजीकृत करने के बाद Google के साथ साइन इन करता है, तो विश्वसनीय प्रदाताओं की फायरबेस प्रमाणीकरण अवधारणा के कारण, उनका प्रमाणीकरण प्रदाता स्वचालित रूप से Google में बदल जाएगा। आप इसके बारे में यहां और अधिक जानकारी प्राप्त कर सकते हैं।

आईओएस+ और एंड्रॉइड

देशी प्लेटफ़ॉर्म पर, प्रमाणीकरण प्रवाह को ट्रिगर करने के लिए एक तृतीय पक्ष लाइब्रेरी की आवश्यकता होती है।

आधिकारिक 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);
}

वेब

वेब पर, फायरबेस एसडीके आपके फायरबेस प्रोजेक्ट का उपयोग करके प्रमाणीकरण प्रवाह को स्वचालित रूप से संभालने के लिए समर्थन प्रदान करता है। उदाहरण के लिए:

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

गूगल प्ले गेम्स

आप Play गेम्स साइन-इन का उपयोग करके अपने Android गेम में उपयोगकर्ताओं को प्रमाणित कर सकते हैं।

एंड्रॉयड

एंड्रॉइड पर Google सेटअप के निर्देशों का पालन करें, फिर अपनी फायरबेस ऐप जानकारी के साथ 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);
}

फेसबुक

आरंभ करने से पहले अपना फेसबुक डेवलपर ऐप सेटअप करें और फेसबुक लॉगिन सक्षम करने के लिए सेटअप प्रक्रिया का पालन करें।

सुनिश्चित करें कि "फेसबुक" साइन-इन प्रदाता फायरबेस कंसोल पर सक्षम है। फेसबुक ऐप आईडी और सीक्रेट सेट के साथ।

आईओएस+ और एंड्रॉइड

मूल प्लेटफ़ॉर्म पर, फेसबुक एसडीके को स्थापित करने और प्रमाणीकरण प्रवाह को ट्रिगर करने के लिए एक तृतीय पक्ष लाइब्रेरी की आवश्यकता होती है।

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

यह सुनिश्चित करने के लिए कि एंड्रॉइड और आईओएस फेसबुक एसडीके दोनों को सही ढंग से आरंभ किया गया है, आपको प्लगइन दस्तावेज़ में दिए गए चरणों का पालन करना होगा। एक बार पूरा होने पर, साइन-इन प्रवाह ट्रिगर करें, एक फेसबुक क्रेडेंशियल बनाएं और उपयोगकर्ता को साइन इन करें:

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

वेब

वेब पर, फायरबेस एसडीके फायरबेस कंसोल पर दिए गए फेसबुक एप्लिकेशन विवरण का उपयोग करके प्रमाणीकरण प्रवाह को स्वचालित रूप से संभालने के लिए समर्थन प्रदान करता है। उदाहरण के लिए:

एक फेसबुक प्रदाता बनाएं, जो उपयोगकर्ता से आप जो भी अतिरिक्त अनुमति प्राप्त करना चाहते हैं उसे प्रदान करें।

सुनिश्चित करें कि फायरबेस कंसोल से OAuth रीडायरेक्ट URI आपके फेसबुक ऐप में एक वैध OAuth रीडायरेक्ट URI के रूप में जोड़ा गया है।

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

सेब

आईओएस+

शुरू करने से पहले, 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 साइन-इन एक प्राधिकरण कोड लौटाता है जिसका उपयोग 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!);
}

माइक्रोसॉफ्ट

आईओएस+

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

एंड्रॉयड

इससे पहले कि आप 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);
  }
}

ट्विटर

सुनिश्चित करें कि "ट्विटर" साइन-इन प्रदाता एपीआई कुंजी और एपीआई सीक्रेट सेट के साथ फायरबेस कंसोल पर सक्षम है। सुनिश्चित करें कि आपका फायरबेस OAuth रीडायरेक्ट URI (उदाहरण के लिए my-app-12345.firebaseapp.com/__/auth/handler) आपके ट्विटर ऐप के कॉन्फ़िगरेशन पर आपके ऐप के सेटिंग पेज में आपके प्राधिकरण कॉलबैक URL के रूप में सेट है।

आपको अपने ऐप के आधार पर उन्नत एपीआई एक्सेस का अनुरोध करने की भी आवश्यकता हो सकती है।

आईओएस+

आपको अपनी कस्टम URL योजना को iOS गाइड चरण 1 में बताए अनुसार कॉन्फ़िगर करने की आवश्यकता है।

एंड्रॉयड

यदि आपने अभी तक अपने ऐप का SHA-1 फ़िंगरप्रिंट निर्दिष्ट नहीं किया है, तो फ़ायरबेस कंसोल के सेटिंग पृष्ठ से ऐसा करें। अपने ऐप का 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 ऐप सेटअप किया है और GitHub ऐप में कॉलबैक URL सेट के साथ क्लाइंट आईडी और सीक्रेट के साथ फायरबेस कंसोल पर "GitHub" साइन-इन प्रदाता सक्षम है।

आईओएस+ और एंड्रॉइड

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

iOS के लिए, iOS गाइड चरण 1 में बताए अनुसार कस्टम URL योजना जोड़ें।

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

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

वेब

वेब पर, GitHub SDK, फायरबेस कंसोल पर दिए गए GitHub एप्लिकेशन विवरण का उपयोग करके प्रमाणीकरण प्रवाह को स्वचालित रूप से संभालने के लिए समर्थन प्रदान करता है। सुनिश्चित करें कि फायरबेस कंसोल में कॉलबैक यूआरएल डेवलपर कंसोल पर आपके 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);
}

याहू

सुनिश्चित करें कि "याहू" साइन-इन प्रदाता एपीआई कुंजी और एपीआई सीक्रेट सेट के साथ फायरबेस कंसोल पर सक्षम है। यह भी सुनिश्चित करें कि आपका फायरबेस OAuth रीडायरेक्ट यूआरआई (उदाहरण के लिए my-app-12345.firebaseapp.com/__/auth/handler) आपके ऐप के याहू डेवलपर नेटवर्क कॉन्फ़िगरेशन में रीडायरेक्ट यूआरआई के रूप में सेट है।

आईओएस+

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

एंड्रॉयड

शुरू करने से पहले, 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 wait FirebaseAuth.instance.signInAnonymous();

अंतिम AppleProvider = AppleAuthProvider();

यदि (kIsWeb) { प्रतीक्षा करें FirebaseAuth.instance.currentUser?.linkWithPopup(appleProvider);

// आप linkWithRedirect भी उपयोग कर सकते हैं } अन्यथा { wait 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