সম্পূর্ণ সাইন-ইন প্রক্রিয়াটি সম্পন্ন করার জন্য, আপনি আপনার অ্যাপে Firebase SDK ব্যবহার করে জেনেরিক OAuth লগইন ইন্টিগ্রেট করার মাধ্যমে Yahoo-এর মতো OAuth প্রোভাইডারদের দিয়ে Firebase-এ ব্যবহারকারীদের প্রমাণীকরণের সুযোগ দিতে পারেন।
শুরু করার আগে
Yahoo অ্যাকাউন্ট ব্যবহার করে ব্যবহারকারীদের সাইন ইন করাতে হলে, আপনাকে প্রথমে আপনার Firebase প্রোজেক্টের জন্য Yahoo-কে একটি সাইন-ইন প্রদানকারী হিসেবে সক্রিয় করতে হবে:
- আপনার জাভাস্ক্রিপ্ট প্রজেক্টে ফায়ারবেস যুক্ত করুন ।
- Firebase কনসোলে , Auth সেকশনটি খুলুন।
- সাইন ইন পদ্ধতি ট্যাবে, Yahoo প্রোভাইডারটি সক্রিয় করুন।
- সেই প্রোভাইডারের ডেভেলপার কনসোল থেকে ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সিক্রেট প্রোভাইডার কনফিগারেশনে যোগ করুন:
একটি Yahoo OAuth ক্লায়েন্ট নিবন্ধন করতে, Yahoo-এর সাথে একটি ওয়েব অ্যাপ্লিকেশন নিবন্ধন করার বিষয়ে Yahoo ডেভেলপার ডকুমেন্টেশন অনুসরণ করুন।
অবশ্যই দুটি OpenID Connect API পারমিশন—
profileএবংemailনির্বাচন করুন।- এই প্রোভাইডারদের কাছে অ্যাপ নিবন্ধন করার সময়, আপনার অ্যাপের রিডাইরেক্ট ডোমেইন হিসেবে আপনার প্রোজেক্টের জন্য
*.firebaseapp.comডোমেইনটি নিবন্ধন করতে ভুলবেন না।
- সংরক্ষণ করুন- এ ক্লিক করুন।
Firebase SDK দিয়ে সাইন-ইন প্রক্রিয়াটি পরিচালনা করুন।
আপনি যদি একটি ওয়েব অ্যাপ তৈরি করেন, তাহলে ব্যবহারকারীদের ইয়াহু অ্যাকাউন্ট ব্যবহার করে ফায়ারবেসে তাদের প্রমাণীকরণের সবচেয়ে সহজ উপায় হলো ফায়ারবেস জাভাস্ক্রিপ্ট এসডিকে দিয়ে সম্পূর্ণ সাইন-ইন প্রক্রিয়াটি পরিচালনা করা।
Firebase JavaScript SDK ব্যবহার করে সাইন-ইন প্রক্রিয়াটি পরিচালনা করতে, এই ধাপগুলো অনুসরণ করুন:
প্রোভাইডার আইডি yahoo.com ব্যবহার করে একটি OAuthProvider- এর ইনস্ট্যান্স তৈরি করুন।
Web
import { OAuthProvider } from "firebase/auth"; const provider = new OAuthProvider('yahoo.com');
Web
var provider = new firebase.auth.OAuthProvider('yahoo.com');
ঐচ্ছিক : OAuth অনুরোধের সাথে আপনি যে অতিরিক্ত কাস্টম OAuth প্যারামিটারগুলো পাঠাতে চান, তা নির্দিষ্ট করুন।
Web
provider.setCustomParameters({ // Prompt user to re-authenticate to Yahoo. prompt: 'login', // Localize to French. language: 'fr' });
Web
provider.setCustomParameters({ // Prompt user to re-authenticate to Yahoo. prompt: 'login', // Localize to French. language: 'fr' });
Yahoo যে প্যারামিটারগুলো সমর্থন করে, সেগুলোর জন্য Yahoo OAuth ডকুমেন্টেশন দেখুন। মনে রাখবেন যে, আপনি
setCustomParameters()এর মাধ্যমে Firebase-এর প্রয়োজনীয় প্যারামিটারগুলো পাস করতে পারবেন না। এই প্যারামিটারগুলো হলো client_id , redirect_uri , response_type , scope এবং state ।ঐচ্ছিক :
profileএবংemailছাড়াও অতিরিক্ত OAuth 2.0 স্কোপ উল্লেখ করুন যা আপনি অথেনটিকেশন প্রোভাইডারের কাছ থেকে অনুরোধ করতে চান। যদি আপনার অ্যাপ্লিকেশনের Yahoo API থেকে ব্যক্তিগত ব্যবহারকারীর ডেটা অ্যাক্সেসের প্রয়োজন হয়, তাহলে আপনাকে Yahoo ডেভেলপার কনসোলের 'API Permissions'- এর অধীনে Yahoo API-এর জন্য অনুমতি অনুরোধ করতে হবে। অনুরোধ করা OAuth স্কোপগুলো অবশ্যই অ্যাপের API পারমিশনে আগে থেকে কনফিগার করা স্কোপগুলোর সাথে হুবহু মিলতে হবে। উদাহরণস্বরূপ, যদি ব্যবহারকারীর কন্টাক্টে রিড/রাইট অ্যাক্সেস অনুরোধ করা হয় এবং তা অ্যাপের API পারমিশনে আগে থেকে কনফিগার করা থাকে, তাহলে রিড-অনলি OAuth স্কোপsdct-rএর পরিবর্তেsdct-wপাস করতে হবে। অন্যথায়, প্রক্রিয়াটি ব্যর্থ হবে এবং ব্যবহারকারীকে একটি ত্রুটি দেখানো হবে।Web
// Request access to Yahoo Mail API. provider.addScope('mail-r'); // Request read/write access to user contacts. // This must be preconfigured in the app's API permissions. provider.addScope('sdct-w');
Web
// Request access to Yahoo Mail API. provider.addScope('mail-r'); // Request read/write access to user contacts. // This must be preconfigured in the app's API permissions. provider.addScope('sdct-w');
আরও জানতে, Yahoo স্কোপস ডকুমেন্টেশন দেখুন।
OAuth প্রোভাইডার অবজেক্ট ব্যবহার করে Firebase-এর সাথে প্রমাণীকরণ করুন। আপনি একটি পপ-আপ উইন্ডো খুলে অথবা সাইন-ইন পৃষ্ঠায় রিডাইরেক্ট করে আপনার ব্যবহারকারীদের তাদের Yahoo অ্যাকাউন্ট দিয়ে সাইন ইন করতে বলতে পারেন। মোবাইল ডিভাইসের ক্ষেত্রে রিডাইরেক্ট পদ্ধতিটিই বেশি পছন্দনীয়।
পপ-আপ উইন্ডো দিয়ে সাইন ইন করতে,
signInWithPopupকল করুন:Web
import { getAuth, signInWithPopup, OAuthProvider } from "firebase/auth"; const auth = getAuth(); signInWithPopup(auth, provider) .then((result) => { // IdP data available in result.additionalUserInfo.profile // ... // Yahoo OAuth access token and ID token can be retrieved by calling: const credential = OAuthProvider.credentialFromResult(result); const accessToken = credential.accessToken; const idToken = credential.idToken; }) .catch((error) => { // Handle error. });
Web
firebase.auth().signInWithPopup(provider) .then((result) => { // IdP data available in result.additionalUserInfo.profile // ... /** @type {firebase.auth.OAuthCredential} */ const credential = result.credential; // Yahoo OAuth access token and ID token can be retrieved by calling: var accessToken = credential.accessToken; var idToken = credential.idToken; }) .catch((error) => { // Handle error. });
সাইন-ইন পৃষ্ঠায় পুনঃনির্দেশিত হয়ে সাইন ইন করতে,
signInWithRedirectকল করুন:
firebase.auth().signInWithRedirect(provider);
ব্যবহারকারী সাইন-ইন সম্পন্ন করে পেজে ফিরে আসার পর, আপনি
getRedirectResultকল করে সাইন-ইন ফলাফল পেতে পারেন।Web
import { getAuth, signInWithRedirect } from "firebase/auth"; const auth = getAuth(); signInWithRedirect(auth, provider);
Web
firebase.auth().signInWithRedirect(provider);
সফলভাবে সম্পন্ন হলে, ফেরত আসা
firebase.auth.UserCredentialঅবজেক্ট থেকে প্রোভাইডারের সাথে যুক্ত OAuth ID টোকেন এবং অ্যাক্সেস টোকেন পুনরুদ্ধার করা যাবে।OAuth অ্যাক্সেস টোকেন ব্যবহার করে আপনি Yahoo API কল করতে পারেন।
উদাহরণস্বরূপ, প্রোফাইলের প্রাথমিক তথ্য পেতে নিম্নলিখিত REST API-টি কল করা যেতে পারে:
curl -i -H "Authorization: Bearer ACCESS_TOKEN" https://social.yahooapis.com/v1/user/YAHOO_USER_UID/profile?format=json
যেখানে
YAHOO_USER_UIDহল Yahoo ব্যবহারকারীর আইডি যাfirebase.auth().currentUser.providerData[0].uidফিল্ড থেকে অথবাresult.additionalUserInfo.profileথেকে পাওয়া যেতে পারে।যদিও উপরের উদাহরণগুলো সাইন-ইন প্রক্রিয়ার উপর আলোকপাত করে, আপনার কাছে
linkWithPopup/linkWithRedirectব্যবহার করে একজন বিদ্যমান ব্যবহারকারীর সাথে একটি Yahoo প্রোভাইডার লিঙ্ক করার ক্ষমতাও রয়েছে। উদাহরণস্বরূপ, আপনি একই ব্যবহারকারীর সাথে একাধিক প্রোভাইডার লিঙ্ক করতে পারেন, যা তাকে যেকোনো একটি দিয়ে সাইন-ইন করার সুযোগ দেবে।Web
import { getAuth, linkWithPopup, OAuthProvider } from "firebase/auth"; const provider = new OAuthProvider('yahoo.com'); const auth = getAuth(); linkWithPopup(auth.currentUser, provider) .then((result) => { // Yahoo credential is linked to the current user. // IdP data available in result.additionalUserInfo.profile. // Get the OAuth access token and ID Token const credential = OAuthProvider.credentialFromResult(result); const accessToken = credential.accessToken; const idToken = credential.idToken; }) .catch((error) => { // Handle error. });
Web
var provider = new firebase.auth.OAuthProvider('yahoo.com'); firebase.auth().currentUser.linkWithPopup(provider) .then((result) => { // Yahoo credential is linked to the current user. // IdP data available in result.additionalUserInfo.profile. // Yahoo OAuth access token can be retrieved by calling: // result.credential.accessToken // Yahoo OAuth ID token can be retrieved by calling: // result.credential.idToken }) .catch((error) => { // Handle error. });
একই প্যাটার্ন
reauthenticateWithPopup/reauthenticateWithRedirectসাথেও ব্যবহার করা যেতে পারে, যা সাম্প্রতিক লগইন প্রয়োজন এমন সংবেদনশীল অপারেশনের জন্য নতুন ক্রেডেনশিয়াল পুনরুদ্ধার করতে কাজে লাগে।Web
import { getAuth, reauthenticateWithPopup, OAuthProvider } from "firebase/auth"; const provider = new OAuthProvider('yahoo.com'); const auth = getAuth(); reauthenticateWithPopup(auth.currentUser, provider) .then((result) => { // User is re-authenticated with fresh tokens minted and // should be able to perform sensitive operations like account // deletion and email or password update. // IdP data available in result.additionalUserInfo.profile. // Get the OAuth access token and ID Token const credential = OAuthProvider.credentialFromResult(result); const accessToken = credential.accessToken; const idToken = credential.idToken; }) .catch((error) => { // Handle error. });
Web
var provider = new firebase.auth.OAuthProvider('yahoo.com'); firebase.auth().currentUser.reauthenticateWithPopup(provider) .then((result) => { // User is re-authenticated with fresh tokens minted and // should be able to perform sensitive operations like account // deletion and email or password update. // IdP data available in result.additionalUserInfo.profile. // Yahoo OAuth access token can be retrieved by calling: // result.credential.accessToken // Yahoo OAuth ID token can be retrieved by calling: // result.credential.idToken }) .catch((error) => { // Handle error. });
ক্রোম এক্সটেনশনে ফায়ারবেস দিয়ে প্রমাণীকরণ করুন
আপনি যদি একটি ক্রোম এক্সটেনশন অ্যাপ তৈরি করেন, তাহলে অফস্ক্রিন ডকুমেন্টস গাইডটি দেখুন।
পরবর্তী পদক্ষেপ
কোনো ব্যবহারকারী প্রথমবার সাইন ইন করার পর, একটি নতুন ব্যবহারকারী অ্যাকাউন্ট তৈরি হয় এবং সেটি ব্যবহারকারীর সাইন ইন করার ক্রেডেনশিয়াল—অর্থাৎ, ইউজার নেম ও পাসওয়ার্ড, ফোন নম্বর, বা অথোরাইজেশন প্রোভাইডারের তথ্যের—সাথে লিঙ্ক করা হয়। এই নতুন অ্যাকাউন্টটি আপনার ফায়ারবেস প্রজেক্টের অংশ হিসেবে সংরক্ষিত থাকে এবং ব্যবহারকারী কীভাবে সাইন ইন করছেন তা নির্বিশেষে, আপনার প্রজেক্টের প্রতিটি অ্যাপে তাকে শনাক্ত করতে এটি ব্যবহার করা যেতে পারে।
আপনার অ্যাপগুলিতে, ব্যবহারকারীর অথেন্টিকেশন স্ট্যাটাস জানার জন্য প্রস্তাবিত উপায় হলো
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. });