امکان ورود و ثبت‌نام در اپلیکیشن بدون نیاز به سرور ، با فایربیس

استاندارد

یکی دیگه از امکانات خیلی خوب و مفید پلتفرم فایربیس امکان انجام احراز هویت و ورود و ثبت‌نامه . این قابلیت به شما این امکان رو میده که بدون داشتن دغدغه پیاده‌سازی وب سرویس ، عملیات ورود و ثبت‌نام  رو برای اپلیکیشنتون پیاده‌سازی کنید . با کمک اینکار شما فقط کافیه تمرکز خودتون رو معطوف به پیاده‌سازی کلاینت کنید .
اما از معایب این سرویس هم باید گفت ، بزرگترین مشکل این سرویس برای ما ایرانی‌ها ست (مثل همیشه !!!) و اون مشکل اجازه ندادن ‌فایربیس برای استفاده از این سرویس در داخل ایرانه . یعنی اگه شما اپلیکیشنتون رو برای کاربران داخل ایران توسعه بدید و اگه کاربرانتون با ip های داخلی بخوان از سرویس‌های احراز هویت شما که توسط فایربیس پیاده شده استفاده کنند به مشکل بر میخورند . ولی خب اگه میخواید اپلیکیشنی با کاربر‌های هدف غیر ایرانی داشته باشید این مشکل بی معنی خواهد بود.
در ادامه روند پست قبل رو دنبال میکنیم و برای آشنایی با این سرویس یک مثال از اون رو با هم پیاده میکنیم . کاری که میخوایم در ادامه انجام بدیم ساخت یک اپلیکیشن با فرم‌های ورود ، ثبت‌نام و فراموشی رمزعبورر هست ، و برای انجام این عملیات‌ قصد داریم از سرویس‌هایی که فایربیس در اختیارمون میذاره استفاده کنیم .
فایربیس در سرویس احراز هویتش به ما علاوه بر امکان ثبت‌نام و ورود از طریق ‌ایمیل و پسورد ، امکان استفاده از حساب‌ کاربری شبکه‌های اجتماعی رو هم میده . حساب‌‌های کاربریی مثل فیسبوک ، توییتر ، گیت‌‌هاب ، گوگل .در صورت موفقیت آمیز بودن ورود ، شما به اطلاعات پایه کاربرتون دسترسی خواهید داشت .
عملکرد فایربیس به این صورته که در ابتدا شما اطلاعات مربوط به ورود یا ثبت‌نام رو از کاربر میگیرید و اون‌ها رو به Firebase Authentication SDK میفرسیتد و منتظر میمونید تا بعد از برسی و احراز هویت توسط فایربیس ، داخل اپلیکیشن پاسخ این برسی رو دریافت کنید .
در این مثال ما قصد داریم امکان ثبت‌نام و ورود از طریق ‌ایمیل و پسورد رو برای کاربرمون قرار بدیم .

مرحله اول

ابتدا باید از طریق این آدرس وارد پنل فایربیس بشید و یک پروژه بسازید . چگونگی انجام این کار رو در مرحله اول این پست میتونید بخونید .

مرحله دوم

وارد پنل فایربیس بشید و به صفحه مربوط به Auth برید و مطابق تصاویر زیر عمل کنید .
auth firebase tut1
Screen Shot 2016-08-11 at 3.54.54 PM
Screen Shot 2016-08-11 at 4.05.00 PMحالا میتونیم بریم سراغ پیاده‌سازی اپلیکیشنمون .

مرحله سوم

یه پروژه میسازیم و بعد داخل فایل build.gradle اصلی پروژمون که در سطح پروژه قرار داره کد زیر رو وارد میکنیم .

بعد میریم سراغ فایل build.gradle در سطح ماژول اصلیمون . و dependencies اون رو مثل کد زیر تغیر میدیم .

توی این مرحله میریم سراغ پیاده‌سازی رابط‌کاربری صفحه‌ی ثبت‌نام . یه فایل xml به اسم activity_register مثل زیر میسازیم .

حالا کلاس مربوط به ثبت‌نام رو ، به اسم RegisterActivity میسازیم .

در کد بالا ، کاربر بعد از کلیک بر روی متن‌های مربوط به فراموش کردن رمزعبور و یا قبلا ثبت‌نام کردم ، به صفحه تغیر رمزعبور و ورود فرستاده میشه .
در تابع attemptRegister بعد از چک کردن پسورد و ایمیل وارد شده عملیات، ثبت‌نام توسط متد createUserWithEmailAndPassword انجام میشه و در صورت رخ ندادن خطا ، کاربر به صفحه MainActivity فرستاده خواهد شد . همینطور به واسطه اینکه فایربیس برای انجام کارهاش به GooglePlayService نیاز داره ، قبل از استفاده ازش چک میکنیم که آیا GooglePlayService روی گوشی موجود هست یا نه .

در مرحله بعد صفحه ورود رو میسازیم . برای این کار یک فایل xml به اسم activity_login میسازیم که رابط‌کاربری این صفحه خواهد بود.

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

در این کلاس متد attemptLogin بعد از چک کردن ایمیل و پسورد وارد شده ، به وسیله متد signInWithEmailAndPassword اقدام به ورود به حساب کاربری ایمیل مربوطه میکنه .

حالا میرسیم به صفحه مربوط به فراموش کردن رمزعبور ، ابتدا رابط‌کاربری این صفحه رو مطابق زیر پیاده‌سازی میکنیم .

و کلاس مربوط به این صفحه رو هم مثل زیر خواهیم ساخت .

بعد از فراخوانی متد attemptResetPassword در صورت ثبت شده بودن ایمیل وارد شده ، ایمیلی حاوی لینک تغیر رمزعبور ارسال خواهد . فرمت این ایمیل و متن اون رو میتونید از طریق پنل فایربیس در بخش Auth زیر بخش email templates تغییر بدین .

حالا فقط صفحه MainActivity باقی مونده که اون رو هم مثل زیر پیاده‌سازی میکنیم .

کد کلاس MainActivity

در کلاس بالا در listener ست شده در onStart بعد از مشخص شدن وضعیت کاربر ( وجود داشتن یا نداشتن ) تصمیم گرفته ‌خواهد شد که کاربر به صفحه ثبت‌نام فرستاده شود یا خیر . همینطور با کلیک بر روی دکمه log out متد signOut فراخوانی شده و به واسطه تغیر در وضعیت کاربر ، متد onAuthStateChanged اجرا خواهد شد و کاربر به صفحه ورود منتقل میشود .

و در آخر هم تنها میمونه تغیر فایل ‌Manifest به شکل زیر

حالا همه چیز حاضره و ما بدون نوشتن حتی یک خط کد سرور (با تشکر از فایربیس ) اپلیکیشنی با قابلیت ورود و ثبت‌نام داریم .

همینطور کد‌های کامل ایم مثال رو میتونید روی گیت ببینید .

6 دیدگاه در “امکان ورود و ثبت‌نام در اپلیکیشن بدون نیاز به سرور ، با فایربیس

    • soroushjavdan

      متاسفانه امکان استفاده از این سرویس فایربیس داخل ایران وجود نداره . اگر میخواید اپلیکیشنی برای کاربران غیر ایرانی توسعه بدین ، این سرویس خیلی میتونه کمک کننده باشه . ولی برای استفاده از سرویس‌های دیگه ، مثل ارسال نوتیفیکیشن از طریق firebase اصلا مشکلی وجود نداره .

  1. وحید

    سلام. ممنون از توضیحاتتون.
    می خواستم بدونم برای کرش ریپورت چی؟ اگه کاربرای ایرانی استفاده کنن و کرش کنه برنامه، اطلاعات ارسال می شه یا نه؟

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *