Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

کاربران را در Firebase مدیریت کنید

یک کاربر ایجاد کنید

شما ایجاد یک کاربر جدید در پروژه Firebase خود را با تماس با createUserWithEmailAndPassword روش یا با ورود یک کاربر برای اولین بار با استفاده از یک ارائه دهنده هویت فدرال، مانند Google وارد شوید و یا فیس بوک ورود .

شما همچنین می توانید کاربران جدید-رمز عبور تصدیق از بخش احراز هویت از ایجاد فایربیس کنسول ، در صفحه کاربر.

کاربر فعلی وارد شده را دریافت کنید

روش توصیه شده برای دریافت کاربر فعلی است با تماس با getCurrentUser روش. اگر هیچ کاربران وارد سیستم شده، getCurrentUser تهی می گرداند:

جاوا

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
    // User is signed in
} else {
    // No user is signed in
}

Kotlin+KTX

val user = Firebase.auth.currentUser
if (user != null) {
    // User is signed in
} else {
    // No user is signed in
}

برخی از موارد که در آن وجود getCurrentUser یک غیر تهی بازگشت FirebaseUser اما این نشانه رمز زمینه معتبر نیست. به عنوان مثال ، اگر کاربر در دستگاه دیگری حذف شده باشد و توکن محلی بازخوانی نشده باشد ، این اتفاق می افتد. در این مورد، شما ممکن است یک کاربر معتبر از getCurrentUser اما تماس های بعدی به منابع تصدیق شکست خواهد خورد.

getCurrentUser همچنین ممکن است بازگشت null چون شی تایید تمام شده نمی دهی اولیه.

اگر شما یک ضمیمه AuthStateListener شما مخاطبین هر زمان که زمینه تغییرات دولت رمز را دریافت کنید. این می تواند برای واکنش به موارد لبه مانند موارد ذکر شده در بالا مفید باشد.

دریافت مشخصات کاربر

برای دریافت اطلاعات نمایه یک کاربر، استفاده از روش های دستیابی از یک نمونه از FirebaseUser . مثلا:

جاوا

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
    // Name, email address, and profile photo Url
    String name = user.getDisplayName();
    String email = user.getEmail();
    Uri photoUrl = user.getPhotoUrl();

    // Check if user's email is verified
    boolean emailVerified = user.isEmailVerified();

    // The user's ID, unique to the Firebase project. Do NOT use this value to
    // authenticate with your backend server, if you have one. Use
    // FirebaseUser.getIdToken() instead.
    String uid = user.getUid();
}

Kotlin+KTX

val user = Firebase.auth.currentUser
user?.let {
    // Name, email address, and profile photo Url
    val name = user.displayName
    val email = user.email
    val photoUrl = user.photoUrl

    // Check if user's email is verified
    val emailVerified = user.isEmailVerified

    // The user's ID, unique to the Firebase project. Do NOT use this value to
    // authenticate with your backend server, if you have one. Use
    // FirebaseUser.getToken() instead.
    val uid = user.uid
}

اطلاعات نمایه خاص ارائه دهنده کاربر را دریافت کنید

برای به دست آوردن اطلاعات پروفایل برگرفته از ورود به سیستم، ارائه دهندگان وابسته به یک کاربر، استفاده از getProviderData روش. مثلا:

جاوا

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
    for (UserInfo profile : user.getProviderData()) {
        // Id of the provider (ex: google.com)
        String providerId = profile.getProviderId();

        // UID specific to the provider
        String uid = profile.getUid();

        // Name, email address, and profile photo Url
        String name = profile.getDisplayName();
        String email = profile.getEmail();
        Uri photoUrl = profile.getPhotoUrl();
    }
}

Kotlin+KTX

val user = Firebase.auth.currentUser
user?.let {
    for (profile in it.providerData) {
        // Id of the provider (ex: google.com)
        val providerId = profile.providerId

        // UID specific to the provider
        val uid = profile.uid

        // Name, email address, and profile photo Url
        val name = profile.displayName
        val email = profile.email
        val photoUrl = profile.photoUrl
    }
}

نمایه کاربر را به روز کنید

شما می توانید نام و مشخصات تصویر کاربر اطلاعات مشخصات اساسی کاربر URL-با به روز رسانی updateProfile روش. مثلا:

جاوا

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder()
        .setDisplayName("Jane Q. User")
        .setPhotoUri(Uri.parse("https://example.com/jane-q-user/profile.jpg"))
        .build();

user.updateProfile(profileUpdates)
        .addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    Log.d(TAG, "User profile updated.");
                }
            }
        });

Kotlin+KTX

val user = Firebase.auth.currentUser

val profileUpdates = userProfileChangeRequest {
    displayName = "Jane Q. User"
    photoUri = Uri.parse("https://example.com/jane-q-user/profile.jpg")
}

user!!.updateProfile(profileUpdates)
        .addOnCompleteListener { task ->
            if (task.isSuccessful) {
                Log.d(TAG, "User profile updated.")
            }
        }

آدرس ایمیل کاربر را تنظیم کنید

شما می توانید آدرس ایمیل کاربر با تنظیم updateEmail روش. مثلا:

جاوا

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

user.updateEmail("user@example.com")
        .addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    Log.d(TAG, "User email address updated.");
                }
            }
        });

Kotlin+KTX

val user = Firebase.auth.currentUser

user!!.updateEmail("user@example.com")
        .addOnCompleteListener { task ->
            if (task.isSuccessful) {
                Log.d(TAG, "User email address updated.")
            }
        }

برای کاربر ایمیل تأیید ارسال کنید

شما می توانید یک ایمیل تایید آدرس به یک کاربر با ارسال sendEmailVerification روش. مثلا:

جاوا

FirebaseAuth auth = FirebaseAuth.getInstance();
FirebaseUser user = auth.getCurrentUser();

user.sendEmailVerification()
        .addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    Log.d(TAG, "Email sent.");
                }
            }
        });

Kotlin+KTX

val user = Firebase.auth.currentUser

user!!.sendEmailVerification()
        .addOnCompleteListener { task ->
            if (task.isSuccessful) {
                Log.d(TAG, "Email sent.")
            }
        }

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

همچنین ممکن است به تصویب دولت از طریق یک ادامه URL به تغییر مسیر بازگشت به برنامه هنگام ارسال یک ایمیل تأیید.

علاوه بر این ، می توانید قبل از ارسال ایمیل ، کد زبان را در نمونه Auth به روز کنید. مثلا:

جاوا

auth.setLanguageCode("fr");
// To apply the default app language instead of explicitly setting it.
// auth.useAppLanguage();

Kotlin+KTX

auth.setLanguageCode("fr")
// To apply the default app language instead of explicitly setting it.
// auth.useAppLanguage()

رمز عبور کاربر را تنظیم کنید

شما می توانید رمز عبور کاربر با تنظیم updatePassword روش. مثلا:

جاوا

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String newPassword = "SOME-SECURE-PASSWORD";

user.updatePassword(newPassword)
        .addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    Log.d(TAG, "User password updated.");
                }
            }
        });

Kotlin+KTX

val user = Firebase.auth.currentUser
val newPassword = "SOME-SECURE-PASSWORD"

user!!.updatePassword(newPassword)
        .addOnCompleteListener { task ->
            if (task.isSuccessful) {
                Log.d(TAG, "User password updated.")
            }
        }

ارسال ایمیل بازنشانی رمز عبور

شما می توانید یک ایمیل بازنشانی رمز ورود به یک کاربر با ارسال sendPasswordResetEmail روش. مثلا:

جاوا

FirebaseAuth auth = FirebaseAuth.getInstance();
String emailAddress = "user@example.com";

auth.sendPasswordResetEmail(emailAddress)
        .addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    Log.d(TAG, "Email sent.");
                }
            }
        });

Kotlin+KTX

val emailAddress = "user@example.com"

Firebase.auth.sendPasswordResetEmail(emailAddress)
        .addOnCompleteListener { task ->
            if (task.isSuccessful) {
                Log.d(TAG, "Email sent.")
            }
        }

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

همچنین ممکن است به تصویب دولت از طریق یک ادامه URL به تغییر مسیر بازگشت به برنامه هنگام ارسال یک ایمیل تنظیم مجدد رمز عبور.

علاوه بر این ، می توانید ایمیل بازنشانی رمز عبور را با به روز رسانی کد زبان در نمونه Auth قبل از ارسال ایمیل ، محلی سازی کنید. مثلا:

جاوا

auth.setLanguageCode("fr");
// To apply the default app language instead of explicitly setting it.
// auth.useAppLanguage();

Kotlin+KTX

auth.setLanguageCode("fr")
// To apply the default app language instead of explicitly setting it.
// auth.useAppLanguage()

همچنین می توانید ایمیل های بازنشانی رمز عبور را از کنسول Firebase ارسال کنید.

حذف یک کاربر

شما می توانید یک حساب کاربری با حذف delete روش. مثلا:

جاوا

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

user.delete()
        .addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    Log.d(TAG, "User account deleted.");
                }
            }
        });

Kotlin+KTX

val user = Firebase.auth.currentUser!!

user.delete()
        .addOnCompleteListener { task ->
            if (task.isSuccessful) {
                Log.d(TAG, "User account deleted.")
            }
        }

شما همچنین می توانید حذف کاربران از بخش احراز هویت از فایربیس کنسول ، در صفحه کاربر.

احراز هویت مجدد کاربر

برخی از اقدامات از جمله حساس به امنیت به عنوان حذف یک حساب ، تنظیم یک آدرس ایمیل اصلی و تغییر رمز عبور -require که کاربر به تازگی در امضا کرد. اگر شما در انجام یکی از این اقدامات، و کاربر پیش، در بیش از حد طولانی امضا عمل با شکست مواجه و می اندازد FirebaseAuthRecentLoginRequiredException . هنگامی که این اتفاق می افتد، reauthenticate کاربر با گرفتن ثبتنام جدید در اعتبار از کاربر و عبور از اعتبار به reauthenticate . مثلا:

جاوا

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

// Get auth credentials from the user for re-authentication. The example below shows
// email and password credentials but there are multiple possible providers,
// such as GoogleAuthProvider or FacebookAuthProvider.
AuthCredential credential = EmailAuthProvider
        .getCredential("user@example.com", "password1234");

// Prompt the user to re-provide their sign-in credentials
user.reauthenticate(credential)
        .addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                Log.d(TAG, "User re-authenticated.");
            }
        });

Kotlin+KTX

val user = Firebase.auth.currentUser!!

// Get auth credentials from the user for re-authentication. The example below shows
// email and password credentials but there are multiple possible providers,
// such as GoogleAuthProvider or FacebookAuthProvider.
val credential = EmailAuthProvider
        .getCredential("user@example.com", "password1234")

// Prompt the user to re-provide their sign-in credentials
user.reauthenticate(credential)
        .addOnCompleteListener { Log.d(TAG, "User re-authenticated.") }

وارد کردن حساب های کاربری

شما می توانید حساب های کاربری را از یک فایل را به پروژه Firebase خود را با استفاده از فایربیس CLI را وارد auth:import فرمان. مثلا:

firebase auth:import users.json --hash-algo=scrypt --rounds=8 --mem-cost=14