सामाजिक प्रमाणीकरण एक बहु-चरणीय प्रमाणीकरण प्रवाह है, जिससे आप किसी उपयोगकर्ता को किसी खाते में साइन इन कर सकते हैं या उन्हें किसी मौजूदा खाते से लिंक कर सकते हैं।
दोनों नेटिव प्लेटफॉर्म और वेब सपोर्ट एक क्रेडेंशियल बनाते हैं जिसे तब signInWithCredential
या linkWithCredential
विधियों को पास किया जा सकता है। वैकल्पिक रूप से वेब प्लेटफॉर्म पर, आप पॉपअप या रीडायरेक्ट के माध्यम से प्रमाणीकरण प्रक्रिया को ट्रिगर कर सकते हैं।
गूगल
फायरबेस के साथ Google साइन-इन का उपयोग करते समय अधिकांश कॉन्फ़िगरेशन पहले से ही सेटअप है, हालांकि आपको यह सुनिश्चित करने की आवश्यकता है कि आपकी मशीन की SHA1 कुंजी Android के साथ उपयोग के लिए कॉन्फ़िगर की गई है। आप देख सकते हैं कि प्रमाणीकरण दस्तावेज़ में कुंजी कैसे उत्पन्न करें।
सुनिश्चित करें कि "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 गेम में उपयोगकर्ताओं को प्रमाणित कर सकते हैं।
एंड्रॉयड
Android पर Google सेटअप के लिए निर्देशों का पालन करें, फिर 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" साइन-इन प्रदाता Firebase कंसोल पर सक्षम है। फेसबुक ऐप आईडी और सीक्रेट सेट के साथ।
आईओएस+ और एंड्रॉइड
नेटिव प्लैटफ़ॉर्म पर, Facebook SDK इंस्टॉल करने और प्रमाणीकरण प्रवाह को ट्रिगर करने, दोनों के लिए तृतीय पक्ष लाइब्रेरी की आवश्यकता होती है.
flutter_facebook_auth
प्लगइन स्थापित करें।
आपको यह सुनिश्चित करने के लिए प्लगइन दस्तावेज़ीकरण में दिए गए चरणों का पालन करना होगा कि Android और iOS दोनों Facebook SDK को सही ढंग से प्रारंभ किया गया है। एक बार पूरा होने पर, साइन-इन प्रवाह को ट्रिगर करें, एक फेसबुक क्रेडेंशियल बनाएं और उपयोगकर्ता को इसमें साइन इन करें:
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 कंसोल से OAuth रीडायरेक्ट URI को आपके Facebook ऐप में मान्य 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 के साथ साइन इन कॉन्फ़िगर करें और 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 लॉगिन कॉन्फ़िगर करें और अपने रनर (चरण 1) में कस्टम URL योजनाएँ जोड़ें।
एंड्रॉयड
प्रारंभ करने से पहले Android के लिए Microsoft लॉगिन कॉन्फ़िगर करें ।
अपने ऐप का SHA-1 फ़िंगरप्रिंट जोड़ना न भूलें।
वेब
इससे पहले कि आप वेब के लिए माइक्रोसॉफ्ट लॉगिन को कॉन्फ़िगर करना शुरू करें।
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 OAuth रीडायरेक्ट URI (उदा. my-app-12345.firebaseapp.com/__/auth/handler) आपके Twitter ऐप के कॉन्फ़िगरेशन पर आपके ऐप के सेटिंग पृष्ठ में आपके प्राधिकरण कॉलबैक URL के रूप में सेट है।
आपको अपने ऐप के आधार पर उन्नत एपीआई एक्सेस का अनुरोध करने की भी आवश्यकता हो सकती है।
आईओएस+
आपको अपनी कस्टम 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);
}
}
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);
}
वेब
वेब पर, गिटहब एसडीके फायरबेस कंसोल पर प्रदान किए गए गिटहब एप्लिकेशन विवरण का उपयोग करके प्रमाणीकरण प्रवाह को स्वचालित रूप से संभालने के लिए समर्थन प्रदान करता है। सुनिश्चित करें कि Firebase कंसोल में कॉलबैक URL को डेवलपर कंसोल पर आपके GitHub एप्लिकेशन में कॉलबैक URL के रूप में जोड़ा गया है।
उदाहरण के लिए:
GitHub प्रदाता बनाएं और signInWithPopup
विधि को क्रेडेंशियल प्रदान करें। यह उपयोगकर्ता को आपके गिटहब एप्लिकेशन में साइन-इन करने के लिए प्रेरित करने के लिए एक नई विंडो ट्रिगर करेगा:
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);
}
याहू
सुनिश्चित करें कि "याहू" साइन-इन प्रदाता एक एपीआई कुंजी और एपीआई गुप्त सेट के साथ फायरबेस कंसोल पर सक्षम है। यह भी सुनिश्चित करें कि आपका Firebase OAuth रीडायरेक्ट URI (उदा. my-app-12345.firebaseapp.com/__/auth/handler) आपके ऐप के Yahoo डेवलपर नेटवर्क कॉन्फ़िगरेशन में रीडायरेक्ट URI के रूप में सेट है।
आईओएस+
शुरू करने से पहले, आईओएस के लिए याहू लॉगिन को कॉन्फ़िगर करें और कस्टम यूआरएल योजनाओं को अपने रनर (चरण 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`
प्रमाणीकरण प्रदाता को जोड़ना
यदि आप किसी प्रदाता को किसी वर्तमान उपयोगकर्ता से लिंक करना चाहते हैं, तो आप निम्न विधि का उपयोग कर सकते हैं: ``` डार्ट प्रतीक्षा FirebaseAuth.instance.signInAnonymously ();
अंतिम सेबप्रोवाइडर = AppleAuthProvider ();
अगर (kIsWeb) {प्रतीक्षा FirebaseAuth.instance.currentUser?.linkWithPopup(appleProvider);
// आप linkWithRedirect
} का भी उपयोग कर सकते हैं {प्रतीक्षा 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