সামাজিক প্রমাণীকরণ হল একটি বহু-পদক্ষেপ প্রমাণীকরণ প্রবাহ, যা আপনাকে একজন ব্যবহারকারীকে একটি অ্যাকাউন্টে সাইন ইন করতে বা বিদ্যমান একটি অ্যাকাউন্টের সাথে লিঙ্ক করতে দেয়।
নেটিভ প্ল্যাটফর্ম এবং ওয়েব উভয়ই একটি শংসাপত্র তৈরি করতে সহায়তা করে যা পরে signInWithCredential বা linkWithCredential পদ্ধতিতে প্রেরণ করা যেতে পারে। বিকল্পভাবে, ওয়েব প্ল্যাটফর্মগুলিতে, আপনি একটি পপআপ বা পুনঃনির্দেশের মাধ্যমে প্রমাণীকরণ প্রক্রিয়াটি ট্রিগার করতে পারেন।
গুগল
Firebase দিয়ে Google সাইন-ইন ব্যবহার করার সময় বেশিরভাগ কনফিগারেশন ইতিমধ্যেই সেটআপ করা থাকে, তবে আপনাকে নিশ্চিত করতে হবে যে আপনার মেশিনের SHA1 কীটি Android এর সাথে ব্যবহারের জন্য কনফিগার করা আছে। আপনি প্রমাণীকরণ ডকুমেন্টেশনে কীটি কীভাবে তৈরি করবেন তা দেখতে পারেন।
Firebase কনসোলে "Google" সাইন-ইন প্রদানকারী সক্ষম আছে কিনা তা নিশ্চিত করুন।
যদি আপনার ব্যবহারকারী ম্যানুয়ালি অ্যাকাউন্ট নিবন্ধন করার পরেও Google-এ সাইন ইন করেন, তাহলে তাদের প্রমাণীকরণ প্রদানকারী স্বয়ংক্রিয়ভাবে Google-এ পরিবর্তিত হবে, কারণ Firebase প্রমাণীকরণের ধারণা বিশ্বস্ত প্রদানকারী। আপনি এই সম্পর্কে আরও জানতে এখানে ক্লিক করুন।
iOS+ এবং অ্যান্ড্রয়েড
নেটিভ প্ল্যাটফর্মগুলিতে, প্রমাণীকরণ প্রবাহ ট্রিগার করার জন্য একটি তৃতীয় পক্ষের লাইব্রেরি প্রয়োজন।
অফিসিয়াল 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);
}
গুগল প্লে গেমস (শুধুমাত্র অ্যান্ড্রয়েড)
নিশ্চিত করুন যে "Play Games" সাইন-ইন প্রদানকারী Firebase কনসোলে সক্রিয় আছে। Play Games Firebase প্রকল্প সেট-আপের জন্য এই নির্দেশাবলী অনুসরণ করুন।
আপনার Firebase অ্যাপের মাধ্যমে Play Games পরিষেবা কনফিগার করার জন্য এই নির্দেশাবলী অনুসরণ করুন।
অ্যান্ড্রয়েড
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" সাইন-ইন প্রদানকারীটি Firebase Console এ সক্রিয় আছে। Facebook অ্যাপ আইডি এবং সিক্রেট সেট সহ।
iOS+ এবং অ্যান্ড্রয়েড
নেটিভ প্ল্যাটফর্মগুলিতে, Facebook SDK ইনস্টল করার জন্য এবং প্রমাণীকরণ প্রবাহ চালু করার জন্য একটি তৃতীয় পক্ষের লাইব্রেরি প্রয়োজন।
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);
}
ওয়েব
ওয়েবে, Firebase SDK Firebase কনসোলে প্রদত্ত Facebook অ্যাপ্লিকেশনের বিবরণ ব্যবহার করে স্বয়ংক্রিয়ভাবে প্রমাণীকরণ প্রবাহ পরিচালনা করার জন্য সহায়তা প্রদান করে। উদাহরণস্বরূপ:
একটি ফেসবুক প্রোভাইডার তৈরি করুন, ব্যবহারকারীর কাছ থেকে আপনি যে কোনও অতিরিক্ত অনুমতির সুযোগ পেতে চান তা প্রদান করে।
নিশ্চিত করুন যে 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);
}
আপেল
আইওএস+
শুরু করার আগে, অ্যাপলের সাথে সাইন ইন কনফিগার করুন এবং অ্যাপলকে সাইন-ইন প্রদানকারী হিসেবে সক্ষম করুন ।
এরপর, নিশ্চিত করুন যে আপনার Runner অ্যাপগুলিতে "অ্যাপল দিয়ে সাইন ইন করুন" ক্ষমতা আছে।
অ্যান্ড্রয়েড
শুরু করার আগে, অ্যাপলের সাথে সাইন ইন কনফিগার করুন এবং অ্যাপলকে সাইন-ইন প্রদানকারী হিসেবে সক্ষম করুন ।
ওয়েব
শুরু করার আগে, অ্যাপলের সাথে সাইন ইন কনফিগার করুন এবং অ্যাপলকে সাইন-ইন প্রদানকারী হিসেবে সক্ষম করুন ।
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+ প্ল্যাটফর্মে অ্যাপল সাইন-ইন নিম্নলিখিত পদ্ধতি ব্যবহার করেও করা যেতে পারে:
// 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);
অ্যাপল প্রমাণীকরণ টোকেন প্রত্যাহার করুন
অ্যাপল প্ল্যাটফর্মে অ্যাপল সাইন-ইন করলে একটি অনুমোদন কোড ফেরত আসে যা revokeTokenWithAuthorizationCode() API ব্যবহার করে অ্যাপল প্রমাণীকরণ টোকেন প্রত্যাহার করতে ব্যবহার করা যেতে পারে।
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!);
}
অ্যাপল গেম সেন্টার (শুধুমাত্র অ্যাপল)
নিশ্চিত করুন যে "গেম সেন্টার" সাইন-ইন প্রদানকারীটি Firebase কনসোলে সক্রিয় আছে। গেম সেন্টার Firebase প্রকল্প সেট-আপের জন্য এই নির্দেশাবলী অনুসরণ করুন।
ফায়ারবেস গেম সেন্টারের শংসাপত্র জারি করার আগে এবং ফায়ারবেসের মাধ্যমে লগ ইন করার আগে আপনাকে গেম সেন্টারে লগইন করতে হবে। এটি কীভাবে অর্জন করা যেতে পারে তার কিছু নির্দেশাবলী এখানে দেওয়া হল ।
আইওএস+
Future<void> _signInWithGameCenter() async {
final credential = GameCenterAuthProvider.credential();
await FirebaseAuth.instance
.signInWithCredential(credential);
}
মাইক্রোসফট
আইওএস+
iOS এর জন্য Microsoft লগইন কনফিগার করা শুরু করার আগে এবং আপনার রানারে কাস্টম URL স্কিম যোগ করুন (ধাপ ১) ।
অ্যান্ড্রয়েড
অ্যান্ড্রয়েডের জন্য মাইক্রোসফ্ট লগইন কনফিগার করা শুরু করার আগে।
আপনার অ্যাপের 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 কনসোলে একটি API কী এবং API সিক্রেট সেট সহ সক্ষম করা আছে। নিশ্চিত করুন যে আপনার Firebase OAuth রিডাইরেক্ট URI (যেমন my-app-12345.firebaseapp.com/__/auth/handler) আপনার টুইটার অ্যাপের কনফিগারেশনে আপনার অ্যাপের সেটিংস পৃষ্ঠায় আপনার অনুমোদন কলব্যাক URL হিসাবে সেট করা আছে।
আপনার অ্যাপের উপর নির্ভর করে আপনাকে উন্নত API অ্যাক্সেসের অনুরোধ করতে হতে পারে।
আইওএস+
iOS গাইড ধাপ ১ এ বর্ণিত পদ্ধতিতে আপনার কাস্টম URL স্কিমটি কনফিগার করতে হবে।
অ্যান্ড্রয়েড
যদি আপনি এখনও আপনার অ্যাপের 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 ডেভেলপার সেটিংস থেকে একটি OAuth অ্যাপ সেটআপ করেছেন এবং Firebase কনসোলে "GitHub" সাইন-ইন প্রদানকারী সক্ষম আছে, ক্লায়েন্ট আইডি এবং সিক্রেট সেট করা আছে, এবং GitHub অ্যাপে কলব্যাক URL সেট করা আছে।
iOS+ এবং অ্যান্ড্রয়েড
নেটিভ প্ল্যাটফর্মের জন্য, আপনাকে google-services.json এবং GoogleService-Info.plist যোগ করতে হবে।
iOS এর জন্য, iOS নির্দেশিকা ধাপ ১ এ বর্ণিত কাস্টম URL স্কিম যোগ করুন।
Future<UserCredential> signInWithGitHub() async {
// Create a new provider
GithubAuthProvider githubProvider = GithubAuthProvider();
return await FirebaseAuth.instance.signInWithProvider(githubProvider);
}
ওয়েব
ওয়েবে, GitHub SDK Firebase কনসোলে প্রদত্ত GitHub অ্যাপ্লিকেশনের বিবরণ ব্যবহার করে স্বয়ংক্রিয়ভাবে প্রমাণীকরণ প্রবাহ পরিচালনা করার জন্য সহায়তা প্রদান করে। নিশ্চিত করুন যে Firebase কনসোলে কলব্যাক URLটি ডেভেলপার কনসোলে আপনার GitHub অ্যাপ্লিকেশনে কলব্যাক URL হিসাবে যোগ করা হয়েছে।
উদাহরণস্বরূপ:
একটি 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 কনসোলে একটি API কী এবং API সিক্রেট সেট সহ সক্রিয় আছে। এছাড়াও নিশ্চিত করুন যে আপনার Firebase OAuth রিডাইরেক্ট URI (যেমন my-app-12345.firebaseapp.com/__/auth/handler) আপনার অ্যাপের Yahoo ডেভেলপার নেটওয়ার্ক কনফিগারেশনে একটি রিডাইরেক্ট URI হিসেবে সেট করা আছে।
আইওএস+
শুরু করার আগে, iOS এর জন্য Yahoo লগইন কনফিগার করুন এবং আপনার রানারে কাস্টম URL স্কিম যোগ করুন (ধাপ ১) ।
অ্যান্ড্রয়েড
শুরু করার আগে, অ্যান্ড্রয়েডের জন্য 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