सोशल ऑथेंटिकेशन, पुष्टि करने का एक ऐसा तरीका है जिसमें कई चरण शामिल होते हैं. इसकी मदद से, किसी उपयोगकर्ता को किसी खाते में साइन इन कराया जा सकता है या उसे किसी मौजूदा खाते से लिंक किया जा सकता है.
नेटिव प्लैटफ़ॉर्म और वेब, दोनों पर क्रेडेंशियल बनाया जा सकता है. इसके बाद, इसे signInWithCredential या linkWithCredential तरीकों से पास किया जा सकता है. वेब प्लैटफ़ॉर्म पर, पॉप-अप या रीडायरेक्ट के ज़रिए पुष्टि करने की प्रोसेस शुरू की जा सकती है.
Firebase के साथ 'Google साइन इन' का इस्तेमाल करने पर, ज़्यादातर कॉन्फ़िगरेशन पहले से ही सेट अप होता है. हालांकि, आपको यह पक्का करना होगा कि आपके डिवाइस की SHA1 कुंजी, Android के साथ इस्तेमाल करने के लिए कॉन्फ़िगर की गई हो. पुष्टि करने से जुड़े दस्तावेज़ में, कुंजी जनरेट करने का तरीका देखा जा सकता है.
पक्का करें कि Firebase console में, "Google" साइन-इन की सुविधा देने वाली कंपनी चालू हो (इसके लिए, सुरक्षा > पुष्टि करना > साइन-इन का तरीका टैब पर जाएं).
अगर कोई उपयोगकर्ता, मैन्युअल तरीके से खाता रजिस्टर करने के बाद, Google से साइन इन करता है, तो Firebase से पुष्टि करने की सुविधा के तहत, भरोसेमंद कंपनियों के कॉन्सेप्ट की वजह से, उसकी पुष्टि करने वाली कंपनी अपने-आप 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.instance.authenticate();
// Obtain the auth details from the request
final GoogleSignInAuthentication googleAuth = googleUser.authentication;
// Create a new credential
final credential = GoogleAuthProvider.credential(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 पर)
पक्का करें कि Firebase console में, "Play Games" साइन-इन की सुविधा देने वाली कंपनी चालू हो. इसके लिए, सुरक्षा > पुष्टि करना > साइन-इन का तरीका टैब पर जाएं. Play Games के Firebase प्रोजेक्ट को सेट अप करने के लिए, इन निर्देशों का पालन करें .
Play Games की सेवाओं को अपने Firebase ऐप्लिकेशन के साथ कॉन्फ़िगर करने के लिए, इन निर्देशों का पालन करें.
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 लॉगिन की सुविधा चालू करने के लिए, सेटअप की प्रोसेस पूरी करें.
पक्का करें कि Firebase console में, "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 console में दी गई Facebook ऐप्लिकेशन की जानकारी का इस्तेमाल करके, अपने-आप मैनेज किया जा सकता है. उदाहरण के लिए:
Facebook की सुविधा देने वाली कंपनी बनाएं. साथ ही, उपयोगकर्ता से अनुमति के दायरे से जुड़ी कोई भी अतिरिक्त जानकारी लें.
पक्का करें कि Firebase console से मिला 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
iOS+
शुरू करने से पहले, 'Apple से साइन इन करें' की सुविधा कॉन्फ़िगर करें और Apple को साइन-इन की सुविधा देने वाली कंपनी के तौर पर चालू करें.
इसके बाद, पक्का करें कि आपके Runner ऐप्लिकेशन में "Apple से साइन इन करें" की सुविधा हो.
Android
शुरू करने से पहले, '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 प्लैटफ़ॉर्म पर साइन-इन करने के लिए
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 console में, "Game Center" साइन-इन की सुविधा देने वाली कंपनी चालू हो (इसके लिए, सुरक्षा > पुष्टि करना > साइन-इन का तरीका टैब पर जाएं). Game Center के Firebase प्रोजेक्ट को सेट अप करने के लिए, इन निर्देशों का पालन करें.
Firebase के Game Center क्रेडेंशियल जारी करने और Firebase के ज़रिए लॉग इन करने से पहले, आपको Game Center से लॉग इन करना होगा. यहां कुछ निर्देश दिए गए हैं, जिनकी मदद से यह काम किया जा सकता है.
iOS+
Future<void> _signInWithGameCenter() async {
final credential = GameCenterAuthProvider.credential();
await FirebaseAuth.instance
.signInWithCredential(credential);
}
Microsoft
iOS+
शुरू करने से पहले, iOS के लिए Microsoft लॉगिन कॉन्फ़िगर करें और अपने Runner में कस्टम यूआरएल स्कीम जोड़ें (पहला चरण).
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);
}
}
पक्का करें कि Firebase console
में, "Twitter" साइन-इन की सुविधा देने वाली कंपनी चालू हो. साथ ही, एपीआई कुंजी और एपीआई सीक्रेट सेट हो
. इसके लिए, सुरक्षा > पुष्टि करना >
साइन-इन का तरीका टैब पर जाएं.
पक्का करें कि आपका Firebase OAuth रीडायरेक्ट यूआरआई (उदाहरण के लिए
my-app-12345.firebaseapp.com/__/auth/handler)
, आपके
Twitter ऐप्लिकेशन के कॉन्फ़िगरेशन में, आपके ऐप्लिकेशन की सेटिंग वाले पेज पर, अनुमति के लिए कॉलबैक यूआरएल के तौर पर सेट हो.
आपके ऐप्लिकेशन के हिसाब से, आपको एपीआई के लिए ज़्यादा ऐक्सेस का अनुरोध भी करना पड़ सकता है .
iOS+
आपको अपनी कस्टम यूआरएल स्कीम को iOS गाइड के पहले चरण में बताए गए तरीके से कॉन्फ़िगर करना होगा.
Android
अगर आपने अब तक ऐसा नहीं किया है, तो अपने ऐप्लिकेशन का SHA-1 फ़िंगरप्रिंट डालें:
Firebase console में,
सेटिंग > सामान्य टैब पर जाएं.स्क्रोल करके आपके ऐप्लिकेशन कार्ड पर जाएं. इसके बाद, अपना Android ऐप्लिकेशन चुनें और SHA सर्टिफ़िकेट फ़िंगरप्रिंट फ़ील्ड में अपना SHA-1 फ़िंगरप्रिंट जोड़ें.
अपने ऐप्लिकेशन का SHA फ़िंगरप्रिंट पाने के तरीके के बारे में जानने के लिए, अपने क्लाइंट की पुष्टि करना लेख पढ़ें.
वेब
यह सुविधा, डिफ़ॉल्ट रूप से काम करती है.
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 console में, "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 console में दी गई GitHub ऐप्लिकेशन की जानकारी का इस्तेमाल किया जाता है. Firebase पक्का करें कि Firebase console में मौजूद कॉलबैक यूआरएल, डेवलपर console पर आपके 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 में, "Yahoo" साइन-इन की सुविधा देने वाली कंपनी चालू हो
और एपीआई कुंजी और एपीआई सीक्रेट सेट हो
(इसके लिए, सुरक्षा > पुष्टि करना >
साइन-इन का तरीका टैब पर जाएं).
यह भी पक्का करें कि आपका Firebase OAuth रीडायरेक्ट यूआरआई (उदाहरण के लिए, my-app-12345.firebaseapp.com/__/auth/handler), आपके ऐप्लिकेशन के Yahoo डेवलपर नेटवर्क कॉन्फ़िगरेशन में, रीडायरेक्ट यूआरआई के तौर पर सेट हो.
iOS+
शुरू करने से पहले, iOS के लिए Yahoo लॉगिन कॉन्फ़िगर करें और अपने Runner में कस्टम यूआरएल स्कीम जोड़ें (पहला चरण).
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`
पुष्टि करने की सुविधा देने वाली कंपनी को लिंक करना
अगर आपको किसी मौजूदा उपयोगकर्ता से, सुविधा देने वाली कंपनी को लिंक करना है, तो इस तरीके का इस्तेमाल किया जा सकता है:
await FirebaseAuth.instance.signInAnonymously();
final appleProvider = AppleAuthProvider();
if (kIsWeb) {
await FirebaseAuth.instance.currentUser?.linkWithPopup(appleProvider);
// You can also use `linkWithRedirect`
} else {
await FirebaseAuth.instance.currentUser?.linkWithProvider(appleProvider);
}
// You're anonymous user is now upgraded to be able to connect with 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