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

আপনার অ্যাপে টুইটার অথেন্টিকেশন ইন্টিগ্রেট করার মাধ্যমে আপনি ব্যবহারকারীদের তাদের টুইটার অ্যাকাউন্ট ব্যবহার করে ফায়ারবেসে অথেন্টিকেট করার সুযোগ দিতে পারেন। আপনি ফায়ারবেস SDK ব্যবহার করে সাইন-ইন ফ্লোটি সম্পন্ন করে, অথবা ম্যানুয়ালি টুইটার OAuth ফ্লোটি সম্পন্ন করে এবং এর ফলে প্রাপ্ত অ্যাক্সেস টোকেন ও সিক্রেট ফায়ারবেসে পাঠিয়ে টুইটার অথেন্টিকেশন ইন্টিগ্রেট করতে পারেন।

শুরু করার আগে

  1. আপনার জাভাস্ক্রিপ্ট প্রজেক্টে ফায়ারবেস যুক্ত করুন
  2. Firebase কনসোলে, Security > Authentication- এ যান।
  3. সাইন-ইন পদ্ধতি ট্যাবে, টুইটার সাইন-ইন প্রদানকারীকে সক্রিয় করুন।
  4. সেই প্রোভাইডারের ডেভেলপার কনসোল থেকে API কী এবং API সিক্রেট প্রোভাইডার কনফিগারেশনে যোগ করুন:
    1. টুইটারে আপনার অ্যাপটিকে ডেভেলপার অ্যাপ্লিকেশন হিসেবে নিবন্ধন করুন এবং আপনার অ্যাপের OAuth API কীAPI সিক্রেট সংগ্রহ করুন।
    2. আপনার টুইটার অ্যাপের কনফিগ-এর সেটিংস পেজে, আপনার Firebase OAuth রিডাইরেক্ট URI (উদাহরণস্বরূপ, my-app-12345.firebaseapp.com/__/auth/handler ) আপনার অথরাইজেশন কলব্যাক URL হিসেবে সেট করা আছে কিনা, তা নিশ্চিত করুন।
  5. সংরক্ষণ করুন- এ ক্লিক করুন।

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

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

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

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

    Web

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

    Web

    var provider = new firebase.auth.TwitterAuthProvider();
  2. ঐচ্ছিক : প্রাসঙ্গিক কাস্টম 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();
  3. ঐচ্ছিক : OAuth অনুরোধের সাথে আপনি যে অতিরিক্ত কাস্টম OAuth প্রদানকারী প্যারামিটারগুলি পাঠাতে চান তা নির্দিষ্ট করুন। একটি কাস্টম প্যারামিটার যোগ করতে, OAuth প্রদানকারী ডকুমেন্টেশনে নির্দিষ্ট করা কী (key) এবং সংশ্লিষ্ট ভ্যালু (value) সম্বলিত একটি অবজেক্ট দিয়ে ইনিশিয়ালাইজ করা প্রোভাইডারে setCustomParameters কল করুন। উদাহরণস্বরূপ:

    Web

    provider.setCustomParameters({
      'lang': 'es'
    });

    Web

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

      Web

      import { getAuth, signInWithPopup, TwitterAuthProvider } from "firebase/auth";
      
      const auth = getAuth();
      signInWithPopup(auth, provider)
        .then((result) => {
          // This gives you a the Twitter OAuth 1.0 Access Token and Secret.
          // You can use these server side with your app's credentials to access the Twitter API.
          const credential = TwitterAuthProvider.credentialFromResult(result);
          const token = credential.accessToken;
          const secret = credential.secret;
      
          // 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 = TwitterAuthProvider.credentialFromError(error);
          // ...
        });

      Web

      firebase
        .auth()
        .signInWithPopup(provider)
        .then((result) => {
          /** @type {firebase.auth.OAuthCredential} */
          var credential = result.credential;
      
          // This gives you a the Twitter OAuth 1.0 Access Token and Secret.
          // You can use these server side with your app's credentials to access the Twitter API.
          var token = credential.accessToken;
          var secret = credential.secret;
      
          // 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 কল করে আপনি টুইটার প্রোভাইডারের OAuth টোকেনও পুনরুদ্ধার করতে পারেন:

      Web

      import { getAuth, getRedirectResult, TwitterAuthProvider } from "firebase/auth";
      
      const auth = getAuth();
      getRedirectResult(auth)
        .then((result) => {
          // This gives you a the Twitter OAuth 1.0 Access Token and Secret.
          // You can use these server side with your app's credentials to access the Twitter API.
          const credential = TwitterAuthProvider.credentialFromResult(result);
          const token = credential.accessToken;
          const secret = credential.secret;
          // ...
      
          // 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 = TwitterAuthProvider.credentialFromError(error);
          // ...
        });

      Web

      firebase.auth()
        .getRedirectResult()
        .then((result) => {
          if (result.credential) {
            /** @type {firebase.auth.OAuthCredential} */
            var credential = result.credential;
      
            // This gives you a the Twitter OAuth 1.0 Access Token and Secret.
            // You can use these server side with your app's credentials to access the Twitter API.
            var token = credential.accessToken;
            var secret = credential.secret;
            // ...
          }
      
          // 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 দেখুন।

সাইন-ইন প্রক্রিয়াটি ম্যানুয়ালি পরিচালনা করুন।

এছাড়াও আপনি টুইটার OAuth এন্ডপয়েন্টগুলোকে কল করে সাইন-ইন ফ্লোটি পরিচালনা করার মাধ্যমে একটি টুইটার অ্যাকাউন্ট ব্যবহার করে ফায়ারবেসের সাথে প্রমাণীকরণ করতে পারেন:

  1. ডেভেলপারের ডকুমেন্টেশন অনুসরণ করে আপনার অ্যাপে টুইটার অথেন্টিকেশন যুক্ত করুন। টুইটার সাইন-ইন প্রক্রিয়া শেষে আপনি একটি OAuth অ্যাক্সেস টোকেন এবং একটি OAuth সিক্রেট পাবেন।
  2. যদি আপনাকে কোনো Node.js অ্যাপ্লিকেশনে সাইন ইন করতে হয়, তাহলে OAuth অ্যাক্সেস টোকেন এবং OAuth সিক্রেটটি Node.js অ্যাপ্লিকেশনটিতে পাঠিয়ে দিন।
  3. কোনো ব্যবহারকারী টুইটার দিয়ে সফলভাবে সাইন ইন করার পর, OAuth অ্যাক্সেস টোকেন এবং OAuth সিক্রেট-এর বিনিময়ে একটি Firebase ক্রেডেনশিয়াল নিন:
    var credential = firebase.auth.TwitterAuthProvider.credential(token, secret);
  4. Firebase ক্রেডেনশিয়াল ব্যবহার করে Firebase-এ প্রমাণীকরণ করুন:

    Web

    import { getAuth, signInWithCredential, FacebookAuthProvider } from "firebase/auth";
    
    // Sign in with the credential from the Facebook user.
    const auth = getAuth();
    signInWithCredential(auth, credential)
      .then((result) => {
        // Signed in 
        const credential = FacebookAuthProvider.credentialFromResult(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 = FacebookAuthProvider.credentialFromError(error);
        // ...
      });

    Web

    // Sign in with the credential from the Facebook user.
    firebase.auth().signInWithCredential(credential)
      .then((result) => {
        // Signed in       
        var credential = result.credential;
        // ...
      })
      .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 অবজেক্টে একটি অবজারভার সেট করা। এরপর আপনি 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.
});