জাভাস্ক্রিপ্ট ব্যবহার করে GitHub-এর মাধ্যমে প্রমাণীকরণ করা

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

শুরু করার আগে

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

Firebase SDK-এর মাধ্যমে সাইন-ইন ফ্লো ম্যানেজ করা

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

Firebase JavaScript SDK-এর মাধ্যমে সাইন-ইন ফ্লো ম্যানেজ করতে, এইসব ধাপ অনুসরণ করুন:

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

    Web

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

    Web

    var provider = new firebase.auth.GithubAuthProvider();
  2. ঐচ্ছিক: অতিরিক্ত OAuth 2.0 স্কোপ নির্দিষ্ট করুন যা আপনি যাচাইকরণ প্রদানকারীর কাছে অনুরোধ করতে চান। স্কোপ যোগ করতে, কল করুন addScope। যেমন:

    Web

    provider.addScope('repo');

    Web

    provider.addScope('repo');
    যাচাইকরণ প্রদানকারী ডকুমেন্টেশন দেখুন।
  3. ঐচ্ছিক: OAuth অনুরোধের সাথে পাঠাতে চান এমন অতিরিক্ত কাস্টম OAuth প্রদানকারী প্যারামিটার নির্দিষ্ট করুন। কাস্টম প্যারামিটার যোগ করতে, OAuth প্রদানকারীর ডকুমেন্টেশন এবং সংশ্লিষ্ট ভ্যালুতে উল্লেখ করা কী সহ অবজেক্ট দিয়ে ইনিশিয়ালাইজ করা প্রোভাইডারে setCustomParameters কল করুন। যেমন:

    Web

    provider.setCustomParameters({
      'allow_signup': 'false'
    });

    Web

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

      Web

      import { getAuth, signInWithPopup, GithubAuthProvider } from "firebase/auth";
      
      const auth = getAuth();
      signInWithPopup(auth, provider)
        .then((result) => {
          // This gives you a GitHub Access Token. You can use it to access the GitHub API.
          const credential = GithubAuthProvider.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 = GithubAuthProvider.credentialFromError(error);
          // ...
        });

      Web

      firebase
        .auth()
        .signInWithPopup(provider)
        .then((result) => {
          /** @type {firebase.auth.OAuthCredential} */
          var credential = result.credential;
      
          // This gives you a GitHub Access Token. You can use it to access the GitHub 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;
          // ...
        });
      এছাড়াও, মনে রাখবেন যে আপনি GitHub প্রদানকারীর OAuth টোকেন পুনরুদ্ধার করতে পারবেন যা GitHub API ব্যবহার করে অতিরিক্ত ডেটা পেতে ব্যবহার করা যেতে পারে।

      এছাড়াও, আপনি এখানে ভুল ধরতে ও সমাধান করতে পারবেন। সমস্যার কোডের তালিকা দেখতে Auth রেফারেন্স ডকুমেন্ট দেখুন।

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

      Web

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

      Web

      firebase.auth().signInWithRedirect(provider);
      এছাড়াও, আপনার পৃষ্ঠা লোড হলে, আপনি getRedirectResult কল করে GitHub প্রদানকারীর OAuth টোকেন রিট্রিভ করতে পারবেন:

      Web

      import { getAuth, getRedirectResult, GithubAuthProvider } from "firebase/auth";
      
      const auth = getAuth();
      getRedirectResult(auth)
        .then((result) => {
          const credential = GithubAuthProvider.credentialFromResult(result);
          if (credential) {
            // This gives you a GitHub Access Token. You can use it to access the GitHub API.
            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 = GithubAuthProvider.credentialFromError(error);
          // ...
        });

      Web

      firebase.auth()
        .getRedirectResult()
        .then((result) => {
          if (result.credential) {
            /** @type {firebase.auth.OAuthCredential} */
            var credential = result.credential;
      
            // This gives you a GitHub Access Token. You can use it to access the GitHub 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 রেফারেন্স ডকুমেন্ট দেখুন।

সাইন-ইন ফ্লো ম্যানুয়ালি ম্যানেজ করা

এছাড়াও, GitHub OAuth 2.0 এন্ডপয়েন্ট কল করে সাইন-ইন ফ্লো ম্যানেজ করার মাধ্যমে, GitHub অ্যাকাউন্ট ব্যবহার করে Firebase-এর সাথে যাচাই করিয়ে নিতে পারবেন:

  1. ডেভেলপার ডকুমেন্টেশন অনুসরণ করে আপনার অ্যাপে GitHub যাচাইকরণ ইন্টিগ্রেট করুন। GitHub সাইন-ইন ফ্লোয়ের শেষে, আপনি OAuth 2.0 অ্যাক্সেস টোকেন পাবেন।
  2. Node.js অ্যাপ্লিকেশনে সাইন-ইন করার প্রয়োজন হলে, Node.js অ্যাপ্লিকেশনে OAuth অ্যাক্সেস টোকেন পাঠান।
  3. কোনও ব্যবহারকারী GitHub-এর মাধ্যমে সফলভাবে সাইন-ইন করার পরে, Firebase ক্রেডেনশিয়ালের জন্য OAuth 2.0 অ্যাক্সেস টোকেন এক্সচেঞ্জ করুন:

    Web

    import { GithubAuthProvider } from "firebase/auth";
    
    const credential = GithubAuthProvider.credential(token);

    Web

    var credential = firebase.auth.GithubAuthProvider.credential(token);
  4. Firebase ক্রেডেনশিয়াল ব্যবহার করে Firebase-এর মাধ্যমে যাচাই করিয়ে নিন:

    Web

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

    Web

    // Sign in with the credential from the user.
    firebase.auth()
      .signInWithCredential(credential)
      .then((result) => {
        // Signed in 
        // ...
      })
      .catch((error) => {
        // Handle Errors here.
        const errorCode = error.code;
        const errorMessage = error.message;
        // The email of the user's account used.
        const email = error.email;
        // ...
      });

Chrome এক্সটেনশনে Firebase-এর মাধ্যমে যাচাইকরণ

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

পরবর্তী ধাপ

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

  • আপনার অ্যাপে, ব্যবহারকারীর অনুমোদনের স্ট্যাটাস জানার জন্য সাজেস্ট করা পদ্ধতি হল, Auth অবজেক্টে একটি অবজ়ার্ভার সেট করা। আপনি তারপরে User অবজেক্ট থেকে ব্যবহারকারীর প্রাথমিক প্রোফাইল সংক্রান্ত তথ্য পেতে পারেন। ব্যবহারকারীদের ম্যানেজ করা দেখুন।

  • আপনার Firebase Realtime Database এবং Cloud Storage নিরাপত্তা বিধিতে, আপনি 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.
});