استفاده از سرویس Authenticate در Firebase
در سری مقالات آموزش Firebase, به مبحث Authenticate در Firebase میپردازیم.
در اکثر برنامه ها ثبت نام و مشخص کردن هویت کاربر یکی از مهم ترین مباحث از نظر امنیت اطلاعات و مشخص کردن سطوح دسترسی میباشد. یکی از بهترین ابزاری که میتواند برای این منظور استفاده شود سرویس Authenticate در Firebase میباشد. در این سرویس علاوه بر ورود و اهراز هویت از طریق رمز عبور, با استفاده از popular federated identity مانند google, FaceBook, Twitter و … میتواند هویت کاربر وارد شونده را تأیید کند.
Firebase Authenticate تعامل بسیار زیادی با سرویس های دیگر Firebase دارد و میتوان سرویس هارا به نوعی تنظیم نمود تا سیستم اهراز هویت نیز برای تأمین امنیت برنامه ایفای نقش کند. به این منظور از تکنولوژی هایی مانند OAuth 2.0 و OpenId Connect استفاده میکند و همچنین پیاده سازی آن در سمت back end بسیار راحت میباشد.
برای شروع ابتدا Dependency مربوطه را به Gradle اضافه میکنیم :
compile 'com.google.firebase:firebase-auth:10.0.1'
سپس نیاز است تا یک User Interface مناسب برای ورود و یا ثبتام کاربر طراحی کنید.
ابتدا نیاز است تا یک Instance برای استفاده از اهراز هویت ایجاد کنیم :
FirebaseAuth firebaseAuth; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); firebaseAuth = FirebaseAuth.getInstance(); }
ابتدا اقدام به ثبتنام کاربر میکنیم :
private void register(String email, String password) { firebaseAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { System.out.println(task.toString()); if (task.isSuccessful()) { System.out.println("Registered"); } } }); }
در صورتی که رایانامه و رمز عبور کاربر را برای ثبتنام وارد کنیم به این صورت در پنل Firebase ثبت خواهد شد :
در صورتی که بخواهیم تغییراتی بر روی اطلاعات کاربر ثبت شده اعمال کنیم نیز میتوانیم از Firebase استفاده کنیم. برای این منظور ابتدا کاربر را مشخص میکنیم:
private FirebaseUser getUser() { return FirebaseAuth.getInstance().getCurrentUser(); }
سپس میتوان اطلاعات کاربر را بروز رسانی کرد :
private void updateUser(String name, String image) { UserProfileChangeRequest userProfileChangeRequest = new UserProfileChangeRequest.Builder() .setDisplayName(name) .setPhotoUri(Uri.parse(image)).build(); getUser().updateProfile(userProfileChangeRequest).addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if (task.isSuccessful()) { System.out.println("updated"); } } }); }
و همچنین میتوان به تمام اطلاعات ثبتی نیز دسترسی داشت
public void getUserInfo(FirebaseUser user) { System.out.println(user.getDisplayName()); System.out.println(user.getEmail()); System.out.println(user.getPhotoUrl()); }
در صورتی که بخواهید اطلاعات اصلی را تغییر دهید به این صورت باید عمل کرد :
private void changeAccountEmail(String email) { getUser().updateEmail(email).addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if (task.isSuccessful()) { System.out.println("Email updated"); } } }); } private void changePassword(String passowrd) { getUser().updatePassword(passowrd).addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if (task.isSuccessful()) { System.out.println("Password updated"); } } }); }
اگر نیاز دارید تا اهراز هویت کاربران را بعد از تأیید رایانامه آنها تکمیل کنید میتوان به این صورت عمل کرد :
private void mailVerification() { if (getUser().sendEmailVerification().isSuccessful()) { System.out.println("mail sent"); } }
در صورتی که رمز عبور را فراموش کرده اید :
private void resetPassword(String mail) { if (firebaseAuth.sendPasswordResetEmail(mail).isSuccessful()) { System.out.println("password sent"); } }
و در نهایت برای حذف یک کاربر :
private void delete() { if (getUser().delete().isSuccessful()) { System.out.println("deleted"); } }
حال نیاز است تا یک Listener برای بررسی وضعیت کاربر ایجاد کنیم :
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); firebaseAuth = FirebaseAuth.getInstance(); authStateListener = new FirebaseAuth.AuthStateListener() { @Override public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { FirebaseUser firebaseUser = firebaseAuth.getCurrentUser(); if (firebaseUser != null) { startActivity(new Intent(LoginActivity.this, MainAcitivty.class)); } else { System.out.println("signed out"); } } }; } @Override protected void onResume() { super.onResume(); firebaseAuth.addAuthStateListener(authStateListener); } @Override protected void onStop() { super.onStop(); if (authStateListener != null) { firebaseAuth.removeAuthStateListener(authStateListener); } }
و اگر کاربر بخواهد sign out کند به این روش میتوانید اعمال کنید :
FirebaseAuth.getInstance().signOut();
در این مقاله سعی شد تا مقدمات اهراز هویت توسط Firebase را پوشش بدهیم و در مقاله بعدی اهراز هویت با استفاده از popular federated identity بررسی میکنیم.
سری مقالات آموزش Firebase همچنان ادامه دارد.
با ما همراه باشید.
مطالب زیر را حتما مطالعه کنید
آموزش Gradle – اهمیت Project Automation
درک مفهوم کدنویسی تمیز در اندروید
5 هک ساده برای کاهش سایز فایل APK
آشنایی با RecyclerView در اندروید
Open/Closed Principle در قوانین Solid
توابع در زبان برنامه نویسی Kotlin
2 Comments
Join the discussion and tell us your opinion.
دیدگاهتان را بنویسید لغو پاسخ
برای نوشتن دیدگاه باید وارد بشوید.
سلام حاجی
ممنون که سلسله مقالاتی رو پی گرفتی و داری میری آخر firebase
آیا کاربری ایراینی می تونن وارد بزنن با Authenticate در Firebase؟؟؟
سلام دوست عزیز. ممنون از همراهیتون. خیر متاسفانه این سرویس ها تحریم هستند و باید با تغییر IP از Firebase استفاده کنید.