ফেডারেটেড পরিচয় & সামাজিক সাইন-ইন

সামাজিক প্রমাণীকরণ হল একটি বহু-পদক্ষেপ প্রমাণীকরণ প্রবাহ, যা আপনাকে একটি ব্যবহারকারীকে একটি অ্যাকাউন্টে সাইন ইন করতে বা বিদ্যমান একটির সাথে তাদের লিঙ্ক করতে দেয়৷

উভয় নেটিভ প্ল্যাটফর্ম এবং ওয়েব সমর্থন একটি শংসাপত্র তৈরি করে যা তারপর signInWithCredential বা linkWithCredential পদ্ধতিতে পাস করা যেতে পারে। বিকল্পভাবে ওয়েব প্ল্যাটফর্মে, আপনি একটি পপআপ বা পুনঃনির্দেশের মাধ্যমে প্রমাণীকরণ প্রক্রিয়াটি ট্রিগার করতে পারেন।

গুগল

Firebase এর সাথে Google সাইন-ইন ব্যবহার করার সময় বেশিরভাগ কনফিগারেশন ইতিমধ্যেই সেটআপ করা হয়েছে, তবে আপনাকে নিশ্চিত করতে হবে যে আপনার মেশিনের SHA1 কী Android এর সাথে ব্যবহারের জন্য কনফিগার করা হয়েছে। আপনি প্রমাণীকরণ ডকুমেন্টেশনে কী তৈরি করতে পারেন তা দেখতে পারেন।

নিশ্চিত করুন যে Firebase কনসোলে "Google" সাইন-ইন প্রদানকারী সক্রিয় আছে।

যদি আপনার ব্যবহারকারী Google-এর সাথে সাইন ইন করেন, ইতিমধ্যেই একটি অ্যাকাউন্ট ম্যানুয়ালি নিবন্ধন করার পরে, বিশ্বস্ত প্রদানকারীদের Firebase প্রমাণীকরণ ধারণার কারণে তাদের প্রমাণীকরণ প্রদানকারী স্বয়ংক্রিয়ভাবে Google-এ পরিবর্তিত হবে। আপনি এখানে এই সম্পর্কে আরো জানতে পারেন.

iOS+ এবং Android

স্থানীয় প্ল্যাটফর্মগুলিতে, প্রমাণীকরণ প্রবাহকে ট্রিগার করার জন্য একটি 3য় পক্ষের লাইব্রেরি প্রয়োজন।

অফিসিয়াল 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);
}

গুগল প্লে গেমস (শুধুমাত্র অ্যান্ড্রয়েড)

Firebase কনসোলে "Play Games" সাইন-ইন প্রদানকারী সক্ষম করা আছে তা নিশ্চিত করুন। Play Games Firebase প্রোজেক্ট সেট-আপের জন্য এই নির্দেশাবলী অনুসরণ করুন।

আপনার Firebase অ্যাপের সাথে প্লে গেম পরিষেবাগুলি কনফিগার করার জন্য এই নির্দেশাবলী অনুসরণ করুন৷

অ্যান্ড্রয়েড

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 কনসোলে "Facebook" সাইন-ইন প্রদানকারী সক্ষম করা আছে তা নিশ্চিত করুন। ফেসবুক অ্যাপ আইডি এবং সিক্রেট সেট সহ।

iOS+ এবং Android

নেটিভ প্ল্যাটফর্মগুলিতে, Facebook SDK ইনস্টল করতে এবং প্রমাণীকরণ প্রবাহকে ট্রিগার করতে একটি 3য় পক্ষের লাইব্রেরি প্রয়োজন।

flutter_facebook_auth প্লাগইন ইনস্টল করুন।

অ্যান্ড্রয়েড এবং 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 রিডাইরেক্ট URI আপনার Facebook অ্যাপে একটি বৈধ OAuth রিডাইরেক্ট URI হিসেবে যোগ করা হয়েছে তা নিশ্চিত করুন।

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

আপেল

iOS+

আপনি শুরু করার আগে, 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);
  }
}

শুধুমাত্র অ্যাপল প্ল্যাটফর্ম সাইন-ইন

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

অ্যাপল প্রমাণীকরণ টোকেন প্রত্যাহার করুন

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

অ্যাপল গেম সেন্টার (শুধুমাত্র অ্যাপল)

নিশ্চিত করুন যে "গেম সেন্টার" সাইন-ইন প্রদানকারী Firebase কনসোলে সক্রিয় আছে। গেম সেন্টার ফায়ারবেস প্রকল্প সেট-আপের জন্য এই নির্দেশাবলী অনুসরণ করুন।

Firebase গেম সেন্টার শংসাপত্র জারি এবং Firebase এর মাধ্যমে লগ ইন করার আগে আপনাকে গেম সেন্টারে লগইন করতে হবে। এটি কীভাবে অর্জন করা যেতে পারে তার কিছু নির্দেশাবলী এখানে রয়েছে

iOS+

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

মাইক্রোসফট

iOS+

আপনি 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);
  }
}

টুইটার

একটি API কী এবং API সিক্রেট সেট সহ Firebase কনসোলে "Twitter" সাইন-ইন প্রদানকারী সক্ষম করা আছে তা নিশ্চিত করুন৷ আপনার Firebase OAuth রিডাইরেক্ট URI (যেমন my-app-12345.firebaseapp.com/__/auth/handler) আপনার Twitter অ্যাপের কনফিগারেশনে আপনার অ্যাপের সেটিংস পৃষ্ঠায় আপনার অনুমোদন কলব্যাক URL হিসেবে সেট করা আছে তা নিশ্চিত করুন।

আপনার অ্যাপের উপর নির্ভর করে আপনাকে উন্নত API অ্যাক্সেসের অনুরোধ করতে হতে পারে।

iOS+

iOS গাইড ধাপ 1-এ বর্ণিত হিসাবে আপনাকে আপনার কাস্টম 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 অ্যাপ সেটআপ করেছেন এবং GitHub অ্যাপে সেট করা কলব্যাক URL সহ ক্লায়েন্ট আইডি এবং সিক্রেট সেট সহ Firebase কনসোলে "GitHub" সাইন-ইন প্রদানকারী সক্ষম করা আছে।

iOS+ এবং Android

নেটিভ প্ল্যাটফর্মের জন্য, আপনাকে 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 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);
}

ইয়াহু

একটি API কী এবং API সিক্রেট সেট সহ Firebase কনসোলে "Yahoo" সাইন-ইন প্রদানকারী সক্ষম করা আছে তা নিশ্চিত করুন৷ এছাড়াও নিশ্চিত করুন যে আপনার Firebase OAuth রিডাইরেক্ট URI (যেমন my-app-12345.firebaseapp.com/__/auth/handler) আপনার অ্যাপের Yahoo ডেভেলপার নেটওয়ার্ক কনফিগারেশনে একটি রিডাইরেক্ট URI হিসেবে সেট করা আছে।

iOS+

আপনি শুরু করার আগে, 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 await FirebaseAuth.instance.signInAnonymously();

চূড়ান্ত আপেলপ্রোভাইডার = AppleAuthProvider();

যদি (kIsWeb) { অপেক্ষা করুন FirebaseAuth.instance.currentUser?.linkWithPopup(appleProvider);

// এছাড়াও আপনি linkWithRedirect } ব্যবহার করতে পারেন অন্য { await 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