با استفاده از ورود به سیستم Google با JavaScript احراز هویت شوید

با ادغام ورود به سیستم Google در برنامه خود می توانید به کاربران خود اجازه دهید با Firebase با استفاده از حساب های Google خود احراز هویت کنند. شما می توانید ورود به سیستم Google را با استفاده از Firebase SDK برای انجام جریان ورود به سیستم ، یا با انجام دستی ورود به سیستم Google و انتقال شناسه حاصله به Firebase ، ادغام کنید.

قبل از اینکه شروع کنی

  1. اضافه کردن فایربیس به پروژه جاوا اسکریپت خود را .
  2. ورود به سیستم Google را در کنسول Firebase فعال کنید:
    1. در فایربیس کنسول ، باز کردن بخش تایید.
    2. بر روی ثبت نام در تب روش، فعال کردن Google وارد شوید در روش و روی Save کلیک کنید.

جریان ورود به سیستم را با Firebase SDK مدیریت کنید

اگر در حال ایجاد یک برنامه وب هستید ، ساده ترین راه برای احراز هویت کاربران خود با Firebase با استفاده از حساب های Google آنها ، مدیریت جریان ورود به سیستم با Firebase JavaScript SDK است. (اگر می خواهید یک کاربر را در Node.js یا سایر محیط های غیر مرورگر احراز هویت کنید ، باید جریان ورود به سیستم را به صورت دستی مدیریت کنید.)

برای مدیریت جریان ورود به سیستم با Firebase JavaScript SDK ، این مراحل را دنبال کنید:

  1. یک نمونه از شیء ارائه دهنده Google ایجاد کنید:

    نسخه وب 9

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

    نسخه وب 8

    var provider = new firebase.auth.GoogleAuthProvider();
  2. اختیاری: مشخص OAuth حفظ 2.0 حوزه که شما به درخواست از ارائه دهنده احراز هویت می خواهید. برای اضافه کردن یک دامنه، پاسخ addScope . مثلا:

    نسخه وب 9

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

    نسخه وب 8

    provider.addScope('https://www.googleapis.com/auth/contacts.readonly');
    را ببینید مستندات ارائه دهنده احراز هویت .
  3. اختیاری: برای ترجمه و بومی سازی جریان OAuth حفظ ارائه دهنده به زبان مورد نظر کاربر به صراحت و بدون عبور از پارامترهای OAuth حفظ سفارشی مربوطه، کد زبان در نمونه تایید به روز رسانی قبل از شروع جریان OAuth تأیید. مثلا:

    نسخه وب 9

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

    نسخه وب 8

    firebase.auth().languageCode = 'it';
    // To apply the default browser preference instead of explicitly setting it.
    // firebase.auth().useDeviceLanguage();
  4. اختیاری: مشخص پارامترهای ارائه دهنده OAuth حفظ سفارشی اضافی که شما می خواهید برای ارسال با درخواست OAuth تأیید. برای اضافه کردن یک پارامتر های سفارشی، پاسخ setCustomParameters به ارائه دهنده مقداردهی اولیه با یک شیء شامل کلید به عنوان اسناد و مدارک ارائه دهنده OAuth حفظ و ارزش مربوطه مشخص شده است. مثلا:

    نسخه وب 9

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

    نسخه وب 8

    provider.setCustomParameters({
      'login_hint': 'user@example.com'
    });
    پارامترهای مورد نیاز OAuth مجاز نیستند و نادیده گرفته می شوند. را ببینید مرجع ارائه دهنده احراز هویت برای جزئیات بیشتر.
  5. با استفاده از شیء ارائه دهنده Google با Firebase احراز هویت کنید. با باز کردن یک پنجره بازشو یا هدایت مجدد به صفحه ورود ، می توانید از کاربران خود بخواهید با حساب های Google خود وارد سیستم شوند. روش تغییر مسیر در دستگاه های تلفن همراه ترجیح داده می شود.
    • برای ثبت نام با یک پنجره پاپ آپ، پاسخ signInWithPopup :

      نسخه وب 9

      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;
          // ...
        }).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;
          // The AuthCredential type that was used.
          const credential = GoogleAuthProvider.credentialFromError(error);
          // ...
        });

      نسخه وب 8

      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;
          // ...
        }).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 ارائه دهنده Google را بازیابی کنید که می تواند برای دریافت داده های اضافی با استفاده از API های Google استفاده شود.

      این جایی است که می توانید خطاها را بگیرید و مدیریت کنید. برای یک لیست از کدهای خطا یک نگاه در اسناد مرجع تایید .

    • برای ثبت نام با تغییر مسیر به صفحه ورود به سیستم، پاسخ signInWithRedirect :

      نسخه وب 9

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

      نسخه وب 8

      firebase.auth().signInWithRedirect(provider);
      سپس، شما همچنین می توانید کد OAuth ارائه دهنده گوگل از طریق تماس بازیابی getRedirectResult زمانی که بارهای صفحه خود قرار دهید:

      نسخه وب 9

      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;
        }).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;
          // The AuthCredential type that was used.
          const credential = GoogleAuthProvider.credentialFromError(error);
          // ...
        });

      نسخه وب 8

      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;
        }).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 در افزونه Chrome

اگر در حال ساخت برنامه افزودنی Chrome هستید ، باید شناسه افزونه Chrome خود را اضافه کنید:

  1. پروژه خود را در را باز کنسول فایربیس .
  2. در بخش احراز هویت، باز کردن صفحه ورود به سیستم روش.
  3. اضافه کردن یک URI مانند زیر را به لیست مجاز دامنه:
    chrome-extension://CHROME_EXTENSION_ID

فقط عملیات پنجره ( signInWithPopup ، linkWithPopup و reauthenticateWithPopup ) در دسترس برنامههای افزودنی Chrome، به عنوان برنامههای افزودنی Chrome می توانید HTTP تغییرمسیر استفاده نمی کند. شما باید این روشها را از یک اسکریپت صفحه پس زمینه به جای یک پنجره عمل مرورگر فراخوانی کنید ، زیرا پنجره احراز هویت پنجره عملکرد مرورگر را لغو می کند. روش پنجره تنها ممکن است در پسوند با استفاده از استفاده از اظهارنامه V2 . جدیدتر آشکار V3 تنها اجازه می دهد تا اسکریپت پس زمینه در قالب کارگران خدمات، که می تواند عملیات پنجره در همه انجام نمی دهد.

در مانیفست فایل را برنامه افزودنی Chrome خود را حاصل کنید که شما اضافه کردن https://apis.google.com URL به content_security_policy allowlist.

مراحل بعدی

پس از ورود کاربر برای اولین بار ، یک حساب کاربری جدید ایجاد می شود و به اعتبارنامه - یعنی نام کاربری و گذرواژه ، شماره تلفن یا اطلاعات ارائه دهنده تأیید - که کاربر با آن وارد شده است پیوند داده می شود. این حساب جدید به عنوان بخشی از پروژه Firebase شما ذخیره می شود و می تواند بدون در نظر گرفتن نحوه ورود کاربر در هر برنامه ای در پروژه شما ، کاربر را شناسایی کند.

  • در برنامه های خود را، راه توصیه می شود به دانستن وضعیت تایید از کاربر خود را این است که مجموعه یک ناظر در Auth شی. بعد از آن شما می توانید اطلاعات نمایه کاربر از User شی. مشاهده مدیریت کاربران .

  • در خود پایگاه فایربیس بیدرنگ و ابر ذخیره سازی قوانین امنیتی ، شما می توانید دریافت امضا در شناسه کاربری منحصر به فرد کاربر را از auth متغیر، و استفاده از آن برای کنترل آنچه داده دسترسی کاربر می تواند.

شما می توانید اجازه به کاربران برای ورود به سیستم برنامه خود را با استفاده از ارائه دهندگان تأیید هویت چندگانه توسط ارتباط تایید اعتبار ارائه دهنده به یک حساب کاربری موجود.

برای خروج از سیستم یک کاربر، پاسخ signOut :

نسخه وب 9

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

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

نسخه وب 8

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