জাভাস্ক্রিপ্ট দিয়ে Google ব্যবহার করে প্রমাণীকরণ করুন

আপনি আপনার ব্যবহারকারীদের তাদের গুগল অ্যাকাউন্ট ব্যবহার করে ফায়ারবেসে প্রমাণীকরণের সুযোগ দিতে পারেন। আপনি গুগল সাইন-ইন প্রক্রিয়াটি সম্পন্ন করার জন্য ফায়ারবেস এসডিকে ব্যবহার করতে পারেন, অথবা 'Sign In With Google' লাইব্রেরি ব্যবহার করে ম্যানুয়ালি সাইন-ইন করতে পারেন এবং প্রাপ্ত আইডি টোকেনটি ফায়ারবেসে পাঠাতে পারেন।

শুরু করার আগে

  1. আপনার জাভাস্ক্রিপ্ট প্রজেক্টে ফায়ারবেস যুক্ত করুন
  2. Firebase কনসোলে সাইন-ইন পদ্ধতি হিসেবে Google সক্রিয় করুন:
    1. Firebase কনসোলে , Auth সেকশনটি খুলুন।
    2. সাইন ইন পদ্ধতি ট্যাবে, গুগল সাইন-ইন পদ্ধতিটি সক্রিয় করুন এবং সেভ-এ ক্লিক করুন।

Firebase SDK দিয়ে সাইন-ইন প্রক্রিয়াটি পরিচালনা করুন।

আপনি যদি একটি ওয়েব অ্যাপ তৈরি করেন, তবে ব্যবহারকারীদের গুগল অ্যাকাউন্ট ব্যবহার করে ফায়ারবেসে তাদের প্রমাণীকরণের সবচেয়ে সহজ উপায় হলো ফায়ারবেস জাভাস্ক্রিপ্ট এসডিকে (SDK) দিয়ে সাইন-ইন প্রক্রিয়াটি পরিচালনা করা। (আপনি যদি নোড.জেএস (Node.js) বা অন্য কোনো নন-ব্রাউজার পরিবেশে কোনো ব্যবহারকারীকে প্রমাণীকরণ করতে চান, তবে আপনাকে সাইন-ইন প্রক্রিয়াটি ম্যানুয়ালি পরিচালনা করতে হবে।)

Firebase JavaScript SDK ব্যবহার করে সাইন-ইন প্রক্রিয়াটি পরিচালনা করতে, এই ধাপগুলো অনুসরণ করুন:

  1. Google প্রোভাইডার অবজেক্টের একটি ইনস্ট্যান্স তৈরি করুন:

    Web

    import { GoogleAuthProvider } from "firebase/auth";
    
    const provider = new GoogleAuthProvider();

    Web

    var provider = new firebase.auth.GoogleAuthProvider();
  2. ঐচ্ছিক : অথেনটিকেশন প্রোভাইডারের কাছ থেকে আপনি যে অতিরিক্ত OAuth 2.0 স্কোপগুলো অনুরোধ করতে চান, তা নির্দিষ্ট করুন। একটি স্কোপ যোগ করতে, addScope কল করুন। উদাহরণস্বরূপ:

    Web

    provider.addScope('https://www.googleapis.com/auth/contacts.readonly');

    Web

    provider.addScope('https://www.googleapis.com/auth/contacts.readonly');
    প্রমাণীকরণ প্রদানকারীর ডকুমেন্টেশন দেখুন।
  3. ঐচ্ছিক : প্রাসঙ্গিক কাস্টম OAuth প্যারামিটারগুলো স্পষ্টভাবে পাস না করেই প্রোভাইডারের OAuth ফ্লো-কে ব্যবহারকারীর পছন্দের ভাষায় স্থানীয়করণ করতে, OAuth ফ্লো শুরু করার আগে Auth ইনস্ট্যান্সের ল্যাঙ্গুয়েজ কোড আপডেট করুন। উদাহরণস্বরূপ:

    Web

    import { getAuth } from "firebase/auth";
    
    const auth = getAuth();
    auth.languageCode = 'it';
    // To apply the default browser preference instead of explicitly setting it.
    // auth.useDeviceLanguage();

    Web

    firebase.auth().languageCode = 'it';
    // To apply the default browser preference instead of explicitly setting it.
    // firebase.auth().useDeviceLanguage();
  4. ঐচ্ছিক : OAuth অনুরোধের সাথে আপনি যে অতিরিক্ত কাস্টম OAuth প্রদানকারী প্যারামিটারগুলি পাঠাতে চান তা নির্দিষ্ট করুন। একটি কাস্টম প্যারামিটার যোগ করতে, OAuth প্রদানকারী ডকুমেন্টেশনে নির্দিষ্ট করা কী (key) এবং সংশ্লিষ্ট ভ্যালু (value) সম্বলিত একটি অবজেক্ট দিয়ে ইনিশিয়ালাইজ করা প্রোভাইডারে setCustomParameters কল করুন। উদাহরণস্বরূপ:

    Web

    provider.setCustomParameters({
      'login_hint': 'user@example.com'
    });

    Web

    provider.setCustomParameters({
      'login_hint': 'user@example.com'
    });
    সংরক্ষিত আবশ্যক OAuth প্যারামিটার অনুমোদিত নয় এবং উপেক্ষা করা হবে। আরও বিস্তারিত তথ্যের জন্য প্রমাণীকরণ প্রদানকারীর রেফারেন্স দেখুন।
  5. Google প্রোভাইডার অবজেক্ট ব্যবহার করে Firebase-এর সাথে প্রমাণীকরণ করুন। আপনি একটি পপ-আপ উইন্ডো খুলে অথবা সাইন-ইন পৃষ্ঠায় রিডাইরেক্ট করে আপনার ব্যবহারকারীদের তাদের Google অ্যাকাউন্ট দিয়ে সাইন ইন করতে বলতে পারেন। মোবাইল ডিভাইসের ক্ষেত্রে রিডাইরেক্ট পদ্ধতিটিই বেশি পছন্দনীয়।
    • পপ-আপ উইন্ডো দিয়ে সাইন ইন করতে, signInWithPopup কল করুন:

      Web

      import { getAuth, signInWithPopup, GoogleAuthProvider } from "firebase/auth";
      
      const auth = getAuth();
      signInWithPopup(auth, provider)
        .then((result) => {
          // This gives you a Google Access Token. You can use it to access the Google API.
          const credential = GoogleAuthProvider.credentialFromResult(result);
          const token = credential.accessToken;
          // The signed-in user info.
          const user = result.user;
          // IdP data available using getAdditionalUserInfo(result)
          // ...
        }).catch((error) => {
          // Handle Errors here.
          const errorCode = error.code;
          const errorMessage = error.message;
          // The email of the user's account used.
          const email = error.customData.email;
          // The AuthCredential type that was used.
          const credential = GoogleAuthProvider.credentialFromError(error);
          // ...
        });

      Web

      firebase.auth()
        .signInWithPopup(provider)
        .then((result) => {
          /** @type {firebase.auth.OAuthCredential} */
          var credential = result.credential;
      
          // This gives you a Google Access Token. You can use it to access the Google API.
          var token = credential.accessToken;
          // The signed-in user info.
          var user = result.user;
          // IdP data available in result.additionalUserInfo.profile.
            // ...
        }).catch((error) => {
          // Handle Errors here.
          var errorCode = error.code;
          var errorMessage = error.message;
          // The email of the user's account used.
          var email = error.email;
          // The firebase.auth.AuthCredential type that was used.
          var credential = error.credential;
          // ...
        });
      আরও লক্ষ্য করুন যে, আপনি গুগল প্রোভাইডারের OAuth টোকেনটি পুনরুদ্ধার করতে পারেন, যা গুগল এপিআই (API) ব্যবহার করে অতিরিক্ত ডেটা আনার জন্য কাজে লাগানো যেতে পারে।

      এখানেই আপনি ত্রুটিগুলি ধরতে এবং সমাধান করতে পারবেন। ত্রুটি কোডগুলির তালিকার জন্য Auth Reference Docs দেখুন।

    • সাইন-ইন পৃষ্ঠায় পুনঃনির্দেশিত হয়ে সাইন ইন করতে, signInWithRedirect কল করুন: `signInWithRedirect` ব্যবহার করার সময় সর্বোত্তম অনুশীলনগুলি অনুসরণ করুন।

      Web

      import { getAuth, signInWithRedirect } from "firebase/auth";
      
      const auth = getAuth();
      signInWithRedirect(auth, provider);

      Web

      firebase.auth().signInWithRedirect(provider);
      তারপর, আপনার পেজ লোড হওয়ার সময় getRedirectResult কল করে আপনি Google প্রোভাইডারের OAuth টোকেনটিও পুনরুদ্ধার করতে পারেন:

      Web

      import { getAuth, getRedirectResult, GoogleAuthProvider } from "firebase/auth";
      
      const auth = getAuth();
      getRedirectResult(auth)
        .then((result) => {
          // This gives you a Google Access Token. You can use it to access Google APIs.
          const credential = GoogleAuthProvider.credentialFromResult(result);
          const token = credential.accessToken;
      
          // The signed-in user info.
          const user = result.user;
          // IdP data available using getAdditionalUserInfo(result)
          // ...
        }).catch((error) => {
          // Handle Errors here.
          const errorCode = error.code;
          const errorMessage = error.message;
          // The email of the user's account used.
          const email = error.customData.email;
          // The AuthCredential type that was used.
          const credential = GoogleAuthProvider.credentialFromError(error);
          // ...
        });

      Web

      firebase.auth()
        .getRedirectResult()
        .then((result) => {
          if (result.credential) {
            /** @type {firebase.auth.OAuthCredential} */
            var credential = result.credential;
      
            // This gives you a Google Access Token. You can use it to access the Google API.
            var token = credential.accessToken;
            // ...
          }
          // The signed-in user info.
          var user = result.user;
          // IdP data available in result.additionalUserInfo.profile.
            // ...
        }).catch((error) => {
          // Handle Errors here.
          var errorCode = error.code;
          var errorMessage = error.message;
          // The email of the user's account used.
          var email = error.email;
          // The firebase.auth.AuthCredential type that was used.
          var credential = error.credential;
          // ...
        });
      এখানেই আপনি ত্রুটিগুলি ধরতে এবং সমাধান করতে পারবেন। ত্রুটি কোডগুলির তালিকার জন্য Auth Reference Docs দেখুন।

ক্রোম এক্সটেনশনে ফায়ারবেস দিয়ে প্রমাণীকরণ করুন

আপনি যদি একটি ক্রোম এক্সটেনশন অ্যাপ তৈরি করেন, তাহলে অফস্ক্রিন ডকুমেন্টস গাইডটি দেখুন।

পরবর্তী পদক্ষেপ

কোনো ব্যবহারকারী প্রথমবার সাইন ইন করার পর, একটি নতুন ব্যবহারকারী অ্যাকাউন্ট তৈরি হয় এবং সেটি ব্যবহারকারীর সাইন ইন করার ক্রেডেনশিয়াল—অর্থাৎ, ইউজার নেম ও পাসওয়ার্ড, ফোন নম্বর, বা অথোরাইজেশন প্রোভাইডারের তথ্যের—সাথে লিঙ্ক করা হয়। এই নতুন অ্যাকাউন্টটি আপনার ফায়ারবেস প্রজেক্টের অংশ হিসেবে সংরক্ষিত থাকে এবং ব্যবহারকারী কীভাবে সাইন ইন করছেন তা নির্বিশেষে, আপনার প্রজেক্টের প্রতিটি অ্যাপে তাকে শনাক্ত করতে এটি ব্যবহার করা যেতে পারে।

  • আপনার অ্যাপগুলিতে, ব্যবহারকারীর অথেন্টিকেশন স্ট্যাটাস জানার জন্য প্রস্তাবিত উপায় হলো Auth অবজেক্টে একটি অবজারভার সেট করা। এরপর আপনি User অবজেক্ট থেকে ব্যবহারকারীর প্রাথমিক প্রোফাইল তথ্য পেতে পারেন। ব্যবহারকারী ব্যবস্থাপনা (Manage Users) দেখুন।

  • আপনার Firebase Realtime Database and Cloud Storage Security Rules- এ, আপনি auth ভেরিয়েবল থেকে সাইন-ইন করা ব্যবহারকারীর অনন্য ইউজার আইডি পেতে পারেন এবং একজন ব্যবহারকারী কোন ডেটা অ্যাক্সেস করতে পারবে তা নিয়ন্ত্রণ করতে এটি ব্যবহার করতে পারেন।

বিদ্যমান কোনো ব্যবহারকারী অ্যাকাউন্টের সাথে অথেন্টিকেশন প্রোভাইডারের ক্রেডেনশিয়াল লিঙ্ক করার মাধ্যমে আপনি ব্যবহারকারীদের একাধিক অথেন্টিকেশন প্রোভাইডার ব্যবহার করে আপনার অ্যাপে সাইন ইন করার অনুমতি দিতে পারেন।

কোনো ব্যবহারকারীকে সাইন আউট করতে, signOut কল করুন:

Web

import { getAuth, signOut } from "firebase/auth";

const auth = getAuth();
signOut(auth).then(() => {
  // Sign-out successful.
}).catch((error) => {
  // An error happened.
});

Web

firebase.auth().signOut().then(() => {
  // Sign-out successful.
}).catch((error) => {
  // An error happened.
});