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

सोशल मीडिया पर पुष्टि करने की सुविधा, कई चरणों में पुष्टि करने की प्रक्रिया है. इसकी मदद से, उपयोगकर्ता को किसी खाते या लिंक में साइन इन किया जा सकता है साथ ही, वह भी पहले से मौजूद हो.

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

Google

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

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

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

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 (सिर्फ़ Android वर्शन पर)

पक्का करें कि "Play Games" चालू हो Firebase कंसोल पर साइन-इन करने की सेवा देने वाली कंपनी चालू है. Play Games Firebase प्रोजेक्ट सेट-अप के लिए इन निर्देशों का पालन करें.

Play गेम सेवाएं कॉन्फ़िगर करने के इन निर्देशों का पालन करें के साथ काम करता है.

Android

Future<void> _signInWithPlayGames() async {
  // Get server auth code from 3rd party provider
  // See PR description for details on how you might get the server auth code:
  // https://github.com/firebase/flutterfire/pull/12201#issue-2100392487
  final serverAuthCode = '...';
  final playGamesCredential = PlayGamesAuthProvider.credential(
                                          serverAuthCode: serverAuthCode);

  await FirebaseAuth.instance
    .signInWithCredential(playGamesCredential);
}

Facebook

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

पक्का करें कि "Facebook" Firebase कंसोल पर साइन-इन करने की सेवा देने वाली कंपनी चालू है. जिसे हम 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 रीडायरेक्ट यूआरआई को मान्य 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);
}

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 प्लैटफ़ॉर्म पर साइन इन करने की सुविधा

iOS+ प्लैटफ़ॉर्म पर Apple में साइन-इन करने के लिए, इस तरीके का भी इस्तेमाल किया जा सकता है:

// Implement a function that generates a nonce. See iOS documentation for how to create a nonce:
// https://firebase.google.com/docs/auth/ios/apple#sign_in_with_apple_and_authenticate_with_firebase
String rawNonce = createNonce();
// Create a SHA-256 hash of the nonce. Consider using the `crypto` package from the pub.dev registry.
String hashSHA256String = createHashSHA256String(rawNonce);
// Use the hash of the nonce to get the idToken. Consider using the `sign_in_with_apple` plugin from the pub.dev registry.
String idToken = await getIdToken();

final fullName = AppleFullPersonName(
  familyName: 'Name',
  givenName: 'Your',
);
// Use the `rawNonce` and `idToken` to get the credential
final credential = AppleAuthProvider.credentialWithIDToken(
  idToken,
  rawNonce,
  fullName,
);

await FirebaseAuth.instance.signInWithCredential(credential);

Apple के ऑथराइज़ेशन टोकन रद्द करें

Apple प्लैटफ़ॉर्म पर Apple साइन-इन से ऐसा ऑथराइज़ेशन कोड दिखता है जिसका इस्तेमाल किया जा सकता है revokeTokenWithAuthorizationCode() का इस्तेमाल करके, 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!);
}

Apple Game Center (सिर्फ़ Apple के लिए)

"गेम सेंटर" पक्का करें Firebase कंसोल पर साइन-इन करने की सेवा देने वाली कंपनी चालू है. गेम सेंटर Firebase प्रोजेक्ट सेट-अप के लिए इन निर्देशों का पालन करें.

Firebase गेम सेंटर क्रेडेंशियल जारी करने और Firebase से लॉग इन करने से पहले, आपको गेम सेंटर से लॉगिन करना होगा. यहां कुछ निर्देश दिए गए हैं उन्हें कैसे हासिल किया जा सकता है.

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

Future<void> _signInWithGameCenter() async {
  final credential = GameCenterAuthProvider.credential();
  await FirebaseAuth.instance
      .signInWithCredential(credential);
}

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

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

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

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

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

Android

अगर आपने अभी तक अपने ऐप्लिकेशन का 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" Firebase कंसोल पर साइन-इन करने की सेवा देने वाली कंपनी चालू हो क्लाइंट आईडी और सीक्रेट को 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 टूल, पुष्टि करने के फ़्लो को अपने-आप मैनेज करने के लिए सहायता देता है. इसके लिए, GitHub ऐप्लिकेशन के बारे में जानकारी, Firebase कंसोल पर दी गई है. पक्का करें कि 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

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

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

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

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`

पुष्टि करने वाली कंपनी लिंक करना

अगर आपको सेवा देने वाली किसी कंपनी को मौजूदा उपयोगकर्ता से लिंक करना है, तो यह तरीका अपनाएं: ```डार्ट FirebaseAuth.instance.signInAnonymously() का इंतज़ार करें;

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

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

// आप linkWithRedirect का इस्तेमाल भी कर सकते हैं } और { 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