আপনি আপনার অ্যাপে Facebook লগইন সংহত করে আপনার ব্যবহারকারীদের তাদের Facebook অ্যাকাউন্ট ব্যবহার করে Firebase-এর মাধ্যমে প্রমাণীকরণ করতে দিতে পারেন। সাইন-ইন ফ্লো চালানোর জন্য Firebase SDK ব্যবহার করে, অথবা ম্যানুয়ালি Facebook লগইন ফ্লো চালিয়ে এবং ফলস্বরূপ অ্যাক্সেস টোকেন Firebase-এ পাস করার মাধ্যমে আপনি Facebook লগইন সংহত করতে পারেন।
আপনি শুরু করার আগে
- আপনার JavaScript প্রকল্পে Firebase যোগ করুন ।
- Facebook for Developers সাইটে, আপনার অ্যাপের জন্য অ্যাপ আইডি এবং একটি অ্যাপ সিক্রেট পান।
- ফেসবুক লগইন সক্ষম করুন:
- Firebase কনসোলে , Auth বিভাগটি খুলুন।
- সাইন ইন পদ্ধতি ট্যাবে, Facebook সাইন-ইন পদ্ধতি সক্ষম করুন এবং আপনি Facebook থেকে যে অ্যাপ আইডি এবং অ্যাপ সিক্রেট পেয়েছেন তা নির্দিষ্ট করুন।
- তারপর, নিশ্চিত করুন যে আপনার OAuth রিডাইরেক্ট URI (যেমন
my-app-12345.firebaseapp.com/__/auth/handler
) আপনার OAuth রিডাইরেক্ট ইউআরআইগুলির মধ্যে একটি হিসাবে আপনার Facebook অ্যাপের সেটিংস পৃষ্ঠায় Facebook-এর ডেভেলপারদের সাইটে প্রোডাক্টের জন্য তালিকাভুক্ত আছে। সেটিংস > Facebook লগইন কনফিগারেশন।
Firebase SDK দিয়ে সাইন-ইন ফ্লো পরিচালনা করুন
আপনি যদি একটি ওয়েব অ্যাপ তৈরি করেন, তাহলে আপনার ব্যবহারকারীদের তাদের Facebook অ্যাকাউন্ট ব্যবহার করে Firebase-এর মাধ্যমে প্রমাণীকরণ করার সবচেয়ে সহজ উপায় হল Firebase JavaScript SDK-এর মাধ্যমে সাইন-ইন প্রবাহ পরিচালনা করা। (যদি আপনি Node.js বা অন্য অ-ব্রাউজার পরিবেশে একজন ব্যবহারকারীকে প্রমাণীকরণ করতে চান, তাহলে আপনাকে অবশ্যই সাইন-ইন প্রবাহটি ম্যানুয়ালি পরিচালনা করতে হবে।)
Firebase JavaScript SDK দিয়ে সাইন-ইন প্রবাহ পরিচালনা করতে, এই ধাপগুলি অনুসরণ করুন:
- Facebook প্রদানকারী বস্তুর একটি উদাহরণ তৈরি করুন:
import { FacebookAuthProvider } from "firebase/auth"; const provider = new FacebookAuthProvider();
var provider = new firebase.auth.FacebookAuthProvider();
- ঐচ্ছিক : অতিরিক্ত OAuth 2.0 স্কোপগুলি নির্দিষ্ট করুন যা আপনি প্রমাণীকরণ প্রদানকারীর কাছ থেকে অনুরোধ করতে চান৷ একটি সুযোগ যোগ করতে,
addScope
কল করুন। যেমন: প্রমাণীকরণ প্রদানকারীর ডকুমেন্টেশন দেখুন।provider.addScope('user_birthday');
provider.addScope('user_birthday');
- ঐচ্ছিক : প্রাসঙ্গিক কাস্টম OAuth প্যারামিটারগুলি স্পষ্টভাবে পাস না করেই ব্যবহারকারীর পছন্দের ভাষায় প্রদানকারীর OAuth প্রবাহকে স্থানীয়করণ করতে, OAuth প্রবাহ শুরু করার আগে Auth উদাহরণে ভাষা কোড আপডেট করুন। যেমন:
import { getAuth } from "firebase/auth"; const auth = getAuth(); auth.languageCode = 'it'; // To apply the default browser preference instead of explicitly setting it. // auth.useDeviceLanguage();
firebase.auth().languageCode = 'it'; // To apply the default browser preference instead of explicitly setting it. // firebase.auth().useDeviceLanguage();
- ঐচ্ছিক : অতিরিক্ত কাস্টম OAuth প্রদানকারী প্যারামিটার নির্দিষ্ট করুন যা আপনি OAuth অনুরোধের সাথে পাঠাতে চান। একটি কাস্টম প্যারামিটার যোগ করতে, OAuth প্রদানকারীর ডকুমেন্টেশন এবং সংশ্লিষ্ট মান দ্বারা নির্দিষ্ট করা কী সমন্বিত একটি বস্তু সহ প্রাথমিক প্রদানকারীতে
setCustomParameters
কল করুন। যেমন: সংরক্ষিত প্রয়োজনীয় OAuth প্যারামিটার অনুমোদিত নয় এবং উপেক্ষা করা হবে। আরো বিস্তারিত জানার জন্য প্রমাণীকরণ প্রদানকারীর রেফারেন্স দেখুন।provider.setCustomParameters({ 'display': 'popup' });
provider.setCustomParameters({ 'display': 'popup' });
- Facebook প্রদানকারী অবজেক্ট ব্যবহার করে Firebase দিয়ে প্রমাণীকরণ করুন। আপনি আপনার ব্যবহারকারীদের একটি পপ-আপ উইন্ডো খোলার মাধ্যমে বা সাইন-ইন পৃষ্ঠায় পুনঃনির্দেশ করে তাদের Facebook অ্যাকাউন্টগুলির সাথে সাইন ইন করতে অনুরোধ করতে পারেন৷ রিডাইরেক্ট পদ্ধতি মোবাইল ডিভাইসে পছন্দ করা হয়।
- একটি পপ-আপ উইন্ডো দিয়ে সাইন ইন করতে,
signInWithPopup
কল করুন: এছাড়াও লক্ষ্য করুন যে আপনি Facebook প্রদানকারীর OAuth টোকেন পুনরুদ্ধার করতে পারেন যা Facebook API ব্যবহার করে অতিরিক্ত ডেটা আনতে ব্যবহার করা যেতে পারে।import { getAuth, signInWithPopup, FacebookAuthProvider } from "firebase/auth"; const auth = getAuth(); signInWithPopup(auth, provider) .then((result) => { // The signed-in user info. const user = result.user; // This gives you a Facebook Access Token. You can use it to access the Facebook API. const credential = FacebookAuthProvider.credentialFromResult(result); const accessToken = credential.accessToken; // 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 = FacebookAuthProvider.credentialFromError(error); // ... });
firebase .auth() .signInWithPopup(provider) .then((result) => { /** @type {firebase.auth.OAuthCredential} */ var credential = result.credential; // The signed-in user info. var user = result.user; // IdP data available in result.additionalUserInfo.profile. // ... // This gives you a Facebook Access Token. You can use it to access the Facebook API. var accessToken = credential.accessToken; // ... }) .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; // ... });
এটিও যেখানে আপনি ত্রুটিগুলি ধরতে এবং পরিচালনা করতে পারেন৷ ত্রুটি কোডের একটি তালিকার জন্য প্রমাণীকরণ রেফারেন্স ডক্স দেখুন।
- সাইন-ইন পৃষ্ঠায় পুনঃনির্দেশ করে সাইন ইন করতে,
signInWithRedirect
কল করুন : `signInWithRedirect` ব্যবহার করার সময় সর্বোত্তম অনুশীলনগুলি অনুসরণ করুন৷ তারপর, আপনার পেজ লোড হলেimport { getAuth, signInWithRedirect } from "firebase/auth"; const auth = getAuth(); signInWithRedirect(auth, provider);
firebase.auth().signInWithRedirect(provider);
getRedirectResult
কল করে আপনি Facebook প্রদানকারীর OAuth টোকেনটি পুনরুদ্ধার করতে পারেন: এটিও যেখানে আপনি ত্রুটিগুলি ধরতে এবং পরিচালনা করতে পারেন৷ ত্রুটি কোডের একটি তালিকার জন্য প্রমাণীকরণ রেফারেন্স ডক্স দেখুন।import { getAuth, getRedirectResult, FacebookAuthProvider } from "firebase/auth"; const auth = getAuth(); getRedirectResult(auth) .then((result) => { // This gives you a Facebook Access Token. You can use it to access the Facebook API. const credential = FacebookAuthProvider.credentialFromResult(result); const token = credential.accessToken; 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; // AuthCredential type that was used. const credential = FacebookAuthProvider.credentialFromError(error); // ... });
firebase.auth() .getRedirectResult() .then((result) => { if (result.credential) { /** @type {firebase.auth.OAuthCredential} */ var credential = result.credential; // This gives you a Facebook Access Token. You can use it to access the Facebook 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; // ... });
- একটি পপ-আপ উইন্ডো দিয়ে সাইন ইন করতে,
বিভিন্ন-প্রমাণপত্রের ত্রুটি-সহ-অবস্থিত-অ্যাকাউন্ট পরিচালনা করা
আপনি যদি Firebase কনসোলে প্রতি ইমেল ঠিকানা সেটিং-এ একটি অ্যাকাউন্ট সক্ষম করে থাকেন, যখন একজন ব্যবহারকারী একটি প্রদানকারীতে (যেমন Facebook) সাইন ইন করার চেষ্টা করে এমন একটি ইমেল দিয়ে যা ইতিমধ্যেই অন্য Firebase ব্যবহারকারীর প্রদানকারীর (যেমন Google) জন্য বিদ্যমান, ত্রুটি auth/account-exists-with-different-credential
একটি AuthCredential
অবজেক্ট (Facebook অ্যাক্সেস টোকেন) সহ নিক্ষেপ করা হয়। উদ্দেশ্যপ্রণোদিত প্রদানকারীতে সাইন ইন সম্পূর্ণ করতে, ব্যবহারকারীকে প্রথমে বিদ্যমান প্রদানকারীর (Google) সাথে সাইন ইন করতে হবে এবং তারপর প্রাক্তন AuthCredential
(Facebook অ্যাক্সেস টোকেন) এর সাথে লিঙ্ক করতে হবে।
পপআপ মোড
আপনি যদি signInWithPopup
ব্যবহার করেন, তাহলে আপনি নিম্নলিখিত উদাহরণের মতো কোড সহ auth/account-exists-with-different-credential
ত্রুটিগুলি পরিচালনা করতে পারেন:
import { getAuth, linkWithCredential, signInWithPopup, FacebookAuthProvider, } from "firebase/auth"; try { // Step 1: User tries to sign in using Facebook. let result = await signInWithPopup(getAuth(), new FacebookAuthProvider()); } catch (error) { // Step 2: User's email already exists. if (error.code === "auth/account-exists-with-different-credential") { // The pending Facebook credential. let pendingCred = error.credential; // Step 3: Save the pending credential in temporary storage, // Step 4: Let the user know that they already have an account // but with a different provider, and let them choose another // sign-in method. } } // ... try { // Step 5: Sign the user in using their chosen method. let result = await signInWithPopup(getAuth(), userSelectedProvider); // Step 6: Link to the Facebook credential. // TODO: implement `retrievePendingCred` for your app. let pendingCred = retrievePendingCred(); if (pendingCred !== null) { // As you have access to the pending credential, you can directly call the // link method. let user = await linkWithCredential(result.user, pendingCred); } // Step 7: Continue to app. } catch (error) { // ... }
রিডাইরেক্ট মোড
এই ত্রুটিটি পুনঃনির্দেশ মোডে একইভাবে পরিচালনা করা হয়, পৃষ্ঠা পুনঃনির্দেশের মধ্যে (উদাহরণস্বরূপ, সেশন স্টোরেজ ব্যবহার করে) মুলতুবি থাকা শংসাপত্রটি ক্যাশ করতে হয়।
উন্নত: সাইন-ইন প্রবাহ ম্যানুয়ালি পরিচালনা করুন
এছাড়াও আপনি Facebook লগইন জাভাস্ক্রিপ্ট SDK-এর মাধ্যমে সাইন-ইন ফ্লো পরিচালনা করে একটি Facebook অ্যাকাউন্ট ব্যবহার করে Firebase-এর মাধ্যমে প্রমাণীকরণ করতে পারেন:
- বিকাশকারী ডক্স অনুসরণ করে আপনার অ্যাপে Facebook লগইন সংহত করুন। আপনার Facebook অ্যাপ আইডি দিয়ে Facebook লগইন কনফিগার করতে ভুলবেন না:
<script src="//connect.facebook.net/en_US/sdk.js"></script> <script> FB.init({ /********************************************************************** * TODO(Developer): Change the value below with your Facebook app ID. * **********************************************************************/ appId: '<YOUR_FACEBOOK_APP_ID>', status: true, xfbml: true, version: 'v2.6', }); </script>
- এছাড়াও আমরা Facebook auth State-এ একজন শ্রোতা সেটআপ করি:
FB.Event.subscribe('auth.authResponseChange', checkLoginState);
- আপনি Facebook লগইন সংহত করার পরে, আপনার ওয়েব পৃষ্ঠাগুলিতে একটি Facebook লগইন বোতাম যুক্ত করুন:
<fb:login-button data-auto-logout-link="true" scope="public_profile,email" size="large" ></fb:login-button>
- Facebook auth স্টেট কলব্যাকে, একটি Firebase শংসাপত্র এবং সাইন-ইন Firebase-এর জন্য Facebook-এর প্রমাণীকরণ প্রতিক্রিয়া থেকে auth টোকেন বিনিময় করুন:
এটিও যেখানে আপনি ত্রুটিগুলি ধরতে এবং পরিচালনা করতে পারেন৷ ত্রুটি কোডের একটি তালিকার জন্য প্রমাণীকরণ রেফারেন্স ডক্স দেখুন।import { getAuth, onAuthStateChanged, signInWithCredential, signOut, FacebookAuthProvider } from "firebase/auth"; const auth = getAuth(); function checkLoginState(response) { if (response.authResponse) { // User is signed-in Facebook. const unsubscribe = onAuthStateChanged(auth, (firebaseUser) => { unsubscribe(); // Check if we are already signed-in Firebase with the correct user. if (!isUserEqual(response.authResponse, firebaseUser)) { // Build Firebase credential with the Facebook auth token. const credential = FacebookAuthProvider.credential( response.authResponse.accessToken); // Sign in with the credential from the Facebook user. signInWithCredential(auth, credential) .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); // ... }); } else { // User is already signed-in Firebase with the correct user. } }); } else { // User is signed-out of Facebook. signOut(auth); } }
function checkLoginState(response) { if (response.authResponse) { // User is signed-in Facebook. var unsubscribe = firebase.auth().onAuthStateChanged((firebaseUser) => { unsubscribe(); // Check if we are already signed-in Firebase with the correct user. if (!isUserEqual(response.authResponse, firebaseUser)) { // Build Firebase credential with the Facebook auth token. var credential = firebase.auth.FacebookAuthProvider.credential( response.authResponse.accessToken); // Sign in with the credential from the Facebook user. firebase.auth().signInWithCredential(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; // ... }); } else { // User is already signed-in Firebase with the correct user. } }); } else { // User is signed-out of Facebook. firebase.auth().signOut(); } }
- এছাড়াও আপনার চেক করা উচিত যে Facebook ব্যবহারকারী অপ্রয়োজনীয় পুনঃপ্রমাণ এড়াতে ইতিমধ্যেই Firebase সাইন-ইন করে নেই:
import { FacebookAuthProvider } from "firebase/auth"; function isUserEqual(facebookAuthResponse, firebaseUser) { if (firebaseUser) { const providerData = firebaseUser.providerData; for (let i = 0; i < providerData.length; i++) { if (providerData[i].providerId === FacebookAuthProvider.PROVIDER_ID && providerData[i].uid === facebookAuthResponse.userID) { // We don't need to re-auth the Firebase connection. return true; } } } return false; }
function isUserEqual(facebookAuthResponse, firebaseUser) { if (firebaseUser) { var providerData = firebaseUser.providerData; for (var i = 0; i < providerData.length; i++) { if (providerData[i].providerId === firebase.auth.FacebookAuthProvider.PROVIDER_ID && providerData[i].uid === facebookAuthResponse.userID) { // We don't need to re-auth the Firebase connection. return true; } } } return false; }
উন্নত: Node.js-এ Firebase দিয়ে প্রমাণীকরণ করুন
একটি Node.js অ্যাপ্লিকেশনে ফায়ারবেসের সাথে প্রমাণীকরণ করতে:
- ব্যবহারকারীকে তাদের Facebook অ্যাকাউন্ট দিয়ে সাইন ইন করুন এবং ব্যবহারকারীর Facebook অ্যাক্সেস টোকেন পান। উদাহরণস্বরূপ, একটি ব্রাউজারে ব্যবহারকারীকে সাইন ইন করুন যেমন সাইন-ইন ফ্লো ম্যানুয়ালি হ্যান্ডেল বিভাগে বর্ণিত আছে, তবে ক্লায়েন্ট অ্যাপে এটি ব্যবহার না করে আপনার Node.js অ্যাপ্লিকেশনে অ্যাক্সেস টোকেন পাঠান।
- আপনি ব্যবহারকারীর Facebook অ্যাক্সেস টোকেন পাওয়ার পরে, একটি শংসাপত্র বস্তু তৈরি করতে এটি ব্যবহার করুন এবং তারপরে শংসাপত্রের সাথে ব্যবহারকারীকে সাইন ইন করুন:
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); // ... });
// 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; // ... });
একটি Chrome এক্সটেনশনে Firebase দিয়ে প্রমাণীকরণ করুন
আপনি যদি একটি Chrome এক্সটেনশন অ্যাপ তৈরি করেন, অফস্ক্রিন ডকুমেন্টস গাইড দেখুন।
Facebook সাইন-ইন করার জন্য পুনঃনির্দেশ ডোমেন কাস্টমাইজ করা
প্রকল্প তৈরির সময়, Firebase আপনার প্রকল্পের জন্য একটি অনন্য সাবডোমেনের ব্যবস্থা করবে: https://my-app-12345.firebaseapp.com
।
এটি OAuth সাইন ইনের জন্য পুনঃনির্দেশ প্রক্রিয়া হিসাবেও ব্যবহার করা হবে৷ সমস্ত সমর্থিত OAuth প্রদানকারীদের জন্য সেই ডোমেনটিকে অনুমতি দেওয়া প্রয়োজন৷ যাইহোক, এর মানে হল যে ব্যবহারকারীরা Facebook-এ সাইন ইন করার সময় সেই ডোমেনটি দেখতে পারেন অ্যাপ্লিকেশনটিতে পুনঃনির্দেশ করার আগে: এখানে চালিয়ে যান: https://my-app-12345.firebaseapp.com ।
আপনার সাবডোমেন প্রদর্শন এড়াতে, আপনি Firebase Hosting এর সাথে একটি কাস্টম ডোমেন সেট আপ করতে পারেন:
- Hosting এর জন্য আপনার ডোমেন সেট আপ করার জন্য ধাপ 1 থেকে 3 অনুসরণ করুন। আপনি যখন আপনার ডোমেনের মালিকানা যাচাই করেন, Hosting আপনার কাস্টম ডোমেনের জন্য একটি SSL শংসাপত্রের বিধান করে।
- Firebase কনসোলে অনুমোদিত ডোমেনের তালিকায় আপনার কাস্টম ডোমেন যোগ করুন:
auth.custom.domain.com
। - Facebook বিকাশকারী কনসোল বা OAuth সেটআপ পৃষ্ঠায়, পুনঃনির্দেশিত পৃষ্ঠার URLটিকে সাদা তালিকাভুক্ত করুন, যা আপনার কাস্টম ডোমেনে অ্যাক্সেসযোগ্য হবে:
https://auth.custom.domain.com/__/auth/handler
। - আপনি যখন জাভাস্ক্রিপ্ট লাইব্রেরি আরম্ভ করেন, তখন
authDomain
ফিল্ডের সাথে আপনার কাস্টম ডোমেন নির্দিষ্ট করুন:var config = { apiKey: '...', // Changed from '
PROJECT_ID .firebaseapp.com'. authDomain: 'auth.custom.domain.com', databaseURL: 'https://PROJECT_ID .firebaseio.com', projectId: 'PROJECT_ID ', storageBucket: ' ', messagingSenderId: 'PROJECT_ID .firebasestorage.appSENDER_ID ' }; firebase.initializeApp(config);
পরবর্তী পদক্ষেপ
একজন ব্যবহারকারী প্রথমবার সাইন ইন করার পরে, একটি নতুন ব্যবহারকারীর অ্যাকাউন্ট তৈরি করা হয় এবং শংসাপত্রগুলির সাথে লিঙ্ক করা হয়—অর্থাৎ, ব্যবহারকারীর নাম এবং পাসওয়ার্ড, ফোন নম্বর, বা প্রমাণ প্রদানকারীর তথ্য — ব্যবহারকারী সাইন ইন করেছেন। এই নতুন অ্যাকাউন্টটি আপনার ফায়ারবেস প্রকল্পের অংশ হিসাবে সংরক্ষণ করা হয়েছে এবং ব্যবহারকারী কীভাবে সাইন ইন করুন না কেন, আপনার প্রকল্পের প্রতিটি অ্যাপ জুড়ে একজন ব্যবহারকারীকে শনাক্ত করতে ব্যবহার করা যেতে পারে।
আপনার অ্যাপে, আপনার ব্যবহারকারীর প্রমাণীকরণের স্থিতি জানার প্রস্তাবিত উপায় হল
Auth
অবজেক্টে একজন পর্যবেক্ষক সেট করা। তারপর আপনিUser
অবজেক্ট থেকে ব্যবহারকারীর মৌলিক প্রোফাইল তথ্য পেতে পারেন। ব্যবহারকারীদের পরিচালনা দেখুন।আপনার Firebase Realtime Database এবং Cloud Storage সুরক্ষা নিয়মে , আপনি
auth
ভেরিয়েবল থেকে সাইন-ইন করা ব্যবহারকারীর অনন্য ব্যবহারকারী আইডি পেতে পারেন এবং ব্যবহারকারী কোন ডেটা অ্যাক্সেস করতে পারে তা নিয়ন্ত্রণ করতে এটি ব্যবহার করতে পারেন।
একজন ব্যবহারকারীকে সাইন আউট করতে, signOut
কল করুন:
import { getAuth, signOut } from "firebase/auth"; const auth = getAuth(); signOut(auth).then(() => { // Sign-out successful. }).catch((error) => { // An error happened. });
firebase.auth().signOut().then(() => { // Sign-out successful. }).catch((error) => { // An error happened. });