Google is committed to advancing racial equity for Black communities. See how.
ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

قم بالمصادقة باستخدام Firebase على Android باستخدام رقم هاتف

يمكنك استخدام مصادقة Firebase لتسجيل دخول مستخدم عن طريق إرسال رسالة SMS إلى هاتف المستخدم. يقوم المستخدم بتسجيل الدخول باستخدام رمز يستخدم لمرة واحدة موجود في رسالة SMS.

تتمثل أسهل طريقة لإضافة تسجيل الدخول برقم الهاتف إلى تطبيقك في استخدام FirebaseUI ، والذي يتضمن أداة تسجيل الدخول بدون تسجيل الدخول التي تنفذ تدفقات تسجيل الدخول لتسجيل الدخول إلى رقم الهاتف ، بالإضافة إلى تسجيل الدخول المستند إلى كلمة المرور والتسجيل الموحد -في. يصف هذا المستند كيفية تنفيذ تدفق تسجيل الدخول إلى رقم الهاتف باستخدام Firebase SDK.

قبل ان تبدأ

  1. أضف Firebase إلى مشروع Android ، إذا لم تكن قد قمت بذلك بالفعل.
  2. في ملف build.gradle مستوى المشروع ، تأكد من تضمين مستودع Google Maven في كل من buildscript الخاص بك buildscript allprojects .
  3. أضف تبعية مكتبة Firebase Authentication Android إلى ملف Gradle (على مستوى التطبيق) للوحدة النمطية (عادةً app/build.gradle ):
    implementation 'com.google.firebase:firebase-auth:19.4.0'
  4. إذا لم تكن قد ربطت تطبيقك بمشروع Firebase حتى الآن ، فافعل ذلك من وحدة تحكم Firebase .
  5. إذا لم تكن قد قمت بالفعل بتعيين تجزئة SHA-1 لتطبيقك في وحدة تحكم Firebase ، فافعل ذلك. راجع مصادقة عميلك للحصول على معلومات حول العثور على تجزئة SHA-1 لتطبيقك.

لاحظ أيضًا أن تسجيل الدخول برقم الهاتف يتطلب جهازًا ماديًا ولن يعمل على محاكي.

مخاوف أمنية

المصادقة باستخدام رقم هاتف فقط ، على الرغم من ملاءمتها ، إلا أنها أقل أمانًا من الطرق الأخرى المتاحة ، لأن حيازة رقم هاتف يمكن نقلها بسهولة بين المستخدمين. أيضًا ، على الأجهزة ذات ملفات تعريف المستخدمين المتعددة ، يمكن لأي مستخدم يمكنه تلقي رسائل SMS تسجيل الدخول إلى حساب باستخدام رقم هاتف الجهاز.

إذا كنت تستخدم تسجيل الدخول المستند إلى رقم الهاتف في تطبيقك ، فيجب أن تقدمه جنبًا إلى جنب مع طرق تسجيل دخول أكثر أمانًا ، وإبلاغ المستخدمين بالمقايضات الأمنية باستخدام تسجيل الدخول برقم الهاتف.

تفعيل تسجيل الدخول إلى رقم الهاتف لمشروع Firebase

لتسجيل دخول المستخدمين عن طريق الرسائل القصيرة SMS ، يجب أولاً تمكين طريقة تسجيل الدخول إلى رقم الهاتف لمشروع Firebase الخاص بك:

  1. في وحدة تحكم Firebase ، افتح قسم المصادقة .
  2. في صفحة طريقة تسجيل الدخول ، قم بتمكين طريقة تسجيل الدخول لرقم الهاتف .

الحصة النسبية لطلبات تسجيل الدخول إلى رقم الهاتف في Firebase عالية بما يكفي لعدم تأثر معظم التطبيقات. ومع ذلك ، إذا كنت بحاجة إلى تسجيل الدخول لعدد كبير جدًا من المستخدمين باستخدام مصادقة الهاتف ، فقد تحتاج إلى ترقية خطة التسعير الخاصة بك. انظر الى صفحة التسعير .

أرسل رمز التحقق إلى هاتف المستخدم

لبدء تسجيل الدخول إلى رقم الهاتف ، قدم للمستخدم واجهة تطالبه بكتابة رقم هاتفه. تختلف المتطلبات القانونية ، ولكن كأفضل ممارسة ولتحديد التوقعات للمستخدمين ، يجب إبلاغهم بأنهم إذا استخدموا تسجيل الدخول عبر الهاتف ، فقد يتلقون رسالة SMS للتحقق ويتم تطبيق الأسعار القياسية.

بعد ذلك ، قم بتمرير رقم هاتفهم إلى طريقة PhoneAuthProvider.verifyPhoneNumber لمطالبة Firebase بالتحقق من رقم هاتف المستخدم. فمثلا:

جافا

PhoneAuthProvider.getInstance().verifyPhoneNumber(
        phoneNumber,        // Phone number to verify
        60,                 // Timeout duration
        TimeUnit.SECONDS,   // Unit of timeout
        this,               // Activity (for callback binding)
        mCallbacks);        // OnVerificationStateChangedCallbacks

Kotlin + KTX

PhoneAuthProvider.getInstance().verifyPhoneNumber(
        phoneNumber, // Phone number to verify
        60, // Timeout duration
        TimeUnit.SECONDS, // Unit of timeout
        this, // Activity (for callback binding)
        callbacks) // OnVerificationStateChangedCallbacks

يتم إعادة verifyPhoneNumber طريقة verifyPhoneNumber : إذا اتصلت بها عدة مرات ، كما هو الحال في طريقة onStart الخاصة onStart ، فلن ترسل طريقة verifyPhoneNumber من رقم verifyPhoneNumber رسالة نصية قصيرة ثانية ما لم تنتهي مهلة الطلب الأصلي.

يمكنك استخدام هذا السلوك لاستئناف عملية تسجيل الدخول إلى رقم الهاتف إذا تم إغلاق تطبيقك قبل أن يتمكن المستخدم من تسجيل الدخول (على سبيل المثال ، أثناء استخدام المستخدم لتطبيق الرسائل القصيرة). بعد الاتصال بـ verifyPhoneNumber ، قم بتعيين علامة تشير إلى أن التحقق قيد التقدم. بعد ذلك ، احفظ العلامة في طريقة onSaveInstanceState الخاصة onSaveInstanceState العلامة في onRestoreInstanceState . أخيرًا ، في طريقة onStart الخاصة onStart ، تحقق مما إذا كان التحقق قيد التقدم بالفعل ، وإذا كان الأمر كذلك ، فاتصل بـ verifyPhoneNumber مرة أخرى. تأكد من مسح العلامة عند اكتمال التحقق أو فشله (انظر عمليات رد الاتصال للتحقق ).

للتعامل بسهولة مع تدوير الشاشة وغيرها من حالات إعادة تشغيل النشاط ، مرر نشاطك إلى طريقة verifyPhoneNumber من رقم verifyPhoneNumber . سيتم فصل عمليات الاسترجاعات تلقائيًا عند توقف النشاط ، بحيث يمكنك كتابة رمز انتقال واجهة المستخدم بحرية في طرق رد الاتصال.

يمكن أيضًا ترجمة رسالة SMS التي أرسلها Firebase عن طريق تحديد لغة المصادقة عبر طريقة setLanguageCode على مثيل 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()

عند استدعاء PhoneAuthProvider.verifyPhoneNumber ، يجب أيضًا توفير مثيل OnVerificationStateChangedCallbacks ، والذي يحتوي على تطبيقات لوظائف رد الاتصال التي تعالج نتائج الطلب. فمثلا:

جافا

mCallbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {

    @Override
    public void onVerificationCompleted(PhoneAuthCredential credential) {
        // This callback will be invoked in two situations:
        // 1 - Instant verification. In some cases the phone number can be instantly
        //     verified without needing to send or enter a verification code.
        // 2 - Auto-retrieval. On some devices Google Play services can automatically
        //     detect the incoming verification SMS and perform verification without
        //     user action.
        Log.d(TAG, "onVerificationCompleted:" + credential);

        signInWithPhoneAuthCredential(credential);
    }

    @Override
    public void onVerificationFailed(FirebaseException e) {
        // This callback is invoked in an invalid request for verification is made,
        // for instance if the the phone number format is not valid.
        Log.w(TAG, "onVerificationFailed", e);

        if (e instanceof FirebaseAuthInvalidCredentialsException) {
            // Invalid request
            // ...
        } else if (e instanceof FirebaseTooManyRequestsException) {
            // The SMS quota for the project has been exceeded
            // ...
        }

        // Show a message and update the UI
        // ...
    }

    @Override
    public void onCodeSent(@NonNull String verificationId,
                           @NonNull PhoneAuthProvider.ForceResendingToken token) {
        // The SMS verification code has been sent to the provided phone number, we
        // now need to ask the user to enter the code and then construct a credential
        // by combining the code with a verification ID.
        Log.d(TAG, "onCodeSent:" + verificationId);

        // Save verification ID and resending token so we can use them later
        mVerificationId = verificationId;
        mResendToken = token;

        // ...
    }
};

Kotlin + KTX

callbacks = object : PhoneAuthProvider.OnVerificationStateChangedCallbacks() {

    override fun onVerificationCompleted(credential: PhoneAuthCredential) {
        // This callback will be invoked in two situations:
        // 1 - Instant verification. In some cases the phone number can be instantly
        //     verified without needing to send or enter a verification code.
        // 2 - Auto-retrieval. On some devices Google Play services can automatically
        //     detect the incoming verification SMS and perform verification without
        //     user action.
        Log.d(TAG, "onVerificationCompleted:$credential")

        signInWithPhoneAuthCredential(credential)
    }

    override fun onVerificationFailed(e: FirebaseException) {
        // This callback is invoked in an invalid request for verification is made,
        // for instance if the the phone number format is not valid.
        Log.w(TAG, "onVerificationFailed", e)

        if (e is FirebaseAuthInvalidCredentialsException) {
            // Invalid request
            // ...
        } else if (e is FirebaseTooManyRequestsException) {
            // The SMS quota for the project has been exceeded
            // ...
        }

        // Show a message and update the UI
        // ...
    }

    override fun onCodeSent(
        verificationId: String,
        token: PhoneAuthProvider.ForceResendingToken
    ) {
        // The SMS verification code has been sent to the provided phone number, we
        // now need to ask the user to enter the code and then construct a credential
        // by combining the code with a verification ID.
        Log.d(TAG, "onCodeSent:$verificationId")

        // Save verification ID and resending token so we can use them later
        storedVerificationId = verificationId
        resendToken = token

        // ...
    }
}

عمليات رد الاتصال التحقق

في معظم التطبيقات، يمكنك تنفيذ onVerificationCompleted ، onVerificationFailed ، و onCodeSent رد. يمكنك أيضًا تنفيذ onCodeAutoRetrievalTimeOut ، اعتمادًا على متطلبات تطبيقك.

onVerificationCompleted (PhoneAuthCredential)

تسمى هذه الطريقة في حالتين:

  • التحقق الفوري: في بعض الحالات يمكن التحقق من رقم الهاتف على الفور دون الحاجة إلى إرسال رمز التحقق أو إدخاله.
  • الاسترداد التلقائي: في بعض الأجهزة ، يمكن لخدمات Google Play اكتشاف رسائل التحقق الواردة تلقائيًا وإجراء التحقق دون إجراء من المستخدم. (قد تكون هذه الإمكانية غير متوفرة مع بعض شركات الاتصالات.)
في كلتا الحالتين ، تم التحقق من رقم هاتف المستخدم بنجاح ، ويمكنك استخدام كائن PhoneAuthCredential الذي تم تمريره إلى رد الاتصال لتسجيل دخول المستخدم .

onVerificationFailed (FirebaseException)

يتم استدعاء هذه الطريقة استجابةً لطلب تحقق غير صالح ، مثل الطلب الذي يحدد رقم هاتف أو رمز تحقق غير صالح.

onCodeSent (String verificationId، PhoneAuthProvider.ForceResendingToken)

اختياري. يتم استدعاء هذه الطريقة بعد إرسال رمز التحقق عبر رسالة نصية قصيرة إلى رقم الهاتف المقدم.

عند استدعاء هذه الطريقة ، تعرض معظم التطبيقات واجهة مستخدم تطالب المستخدم بكتابة رمز التحقق من رسالة SMS. (في الوقت نفسه ، قد يستمر التحقق التلقائي في الخلفية.) بعد ذلك ، بعد أن يكتب المستخدم رمز التحقق ، يمكنك استخدام رمز التحقق ومعرف التحقق الذي تم تمريره إلى الطريقة لإنشاء كائن PhoneAuthCredential ، والذي يمكنك بدورها استخدامها لتسجيل دخول المستخدم. ومع ذلك ، قد تنتظر بعض التطبيقات حتى يتم استدعاء onCodeAutoRetrievalTimeOut قبل عرض رمز التحقق UI (غير مستحسن).

onCodeAutoRetrievalTimeOut (معرف التحقق من السلسلة)

اختياري. يتم استدعاء هذا الأسلوب بعد انتهاء مدة المهلة المحددة verifyPhoneNumber أن رقم verifyPhoneNumber قد مر دون onVerificationCompleted أولاً. على الأجهزة التي لا تحتوي على بطاقات SIM ، يتم استدعاء هذه الطريقة على الفور لأن الاسترداد التلقائي للرسائل القصيرة غير ممكن.

تحظر بعض التطبيقات إدخال المستخدم حتى تنتهي مهلة فترة التحقق التلقائي ، وعندها فقط تعرض واجهة مستخدم تطالب المستخدم بكتابة رمز التحقق من رسالة SMS (غير مستحسن).

قم بإنشاء كائن PhoneAuthCredential

بعد أن يدخل المستخدم رمز التحقق الذي أرسله Firebase إلى هاتف المستخدم ، أنشئ كائن PhoneAuthCredential ، باستخدام رمز التحقق ومعرف التحقق الذي تم تمريره إلى onCodeSent أو onCodeAutoRetrievalTimeOut callback. (عندما يتم استدعاء onVerificationCompleted ، تحصل على كائن PhoneAuthCredential مباشرة ، بحيث يمكنك تخطي هذه الخطوة.)

لإنشاء كائن PhoneAuthCredential ، اتصل بـ PhoneAuthProvider.getCredential :

جافا

PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationId, code);

Kotlin + KTX

val credential = PhoneAuthProvider.getCredential(verificationId!!, code)

تسجيل دخول المستخدم

بعد الحصول على كائن PhoneAuthCredential ، سواء في رد الاتصال onVerificationCompleted أو بالاتصال بـ PhoneAuthProvider.getCredential ، أكمل تدفق تسجيل الدخول عن طريق تمرير كائن PhoneAuthCredential إلى FirebaseAuth.signInWithCredential :

جافا

a134 فعل 6 د

Kotlin + KTX

private fun signInWithPhoneAuthCredential(credential: PhoneAuthCredential) {
    auth.signInWithCredential(credential)
            .addOnCompleteListener(this) { task ->
                if (task.isSuccessful) {
                    // Sign in success, update UI with the signed-in user's information
                    Log.d(TAG, "signInWithCredential:success")

                    val user = task.result?.user
                    // ...
                } else {
                    // Sign in failed, display a message and update the UI
                    Log.w(TAG, "signInWithCredential:failure", task.exception)
                    if (task.exception is FirebaseAuthInvalidCredentialsException) {
                        // The verification code entered was invalid
                    }
                }
            }
}

اختبر مع أرقام الهواتف المدرجة في القائمة البيضاء

يمكنك إضافة أرقام هواتف للتطوير إلى القائمة البيضاء عبر وحدة تحكم Firebase. توفر القائمة البيضاء لأرقام الهواتف المزايا التالية:

  • اختبر مصادقة رقم الهاتف دون استهلاك حصة الاستخدام الخاصة بك.
  • اختبر مصادقة رقم الهاتف دون إرسال رسالة SMS فعلية.
  • قم بإجراء اختبارات متتالية باستخدام نفس رقم الهاتف دون التعرض للاختناق. هذا يقلل من خطر الرفض أثناء عملية مراجعة متجر التطبيقات إذا كان المراجع يستخدم نفس رقم الهاتف للاختبار.
  • اختبر بسهولة في بيئات التطوير دون أي جهد إضافي ، مثل القدرة على التطوير في محاكي iOS أو محاكي Android بدون خدمات Google Play.
  • اكتب اختبارات التكامل دون أن تمنعك فحوصات الأمان التي تُطبق عادةً على أرقام الهواتف الحقيقية في بيئة الإنتاج.

يجب أن تستوفي أرقام الهواتف المراد إدراجها في القائمة البيضاء المتطلبات التالية:

  1. تأكد من استخدام أرقام خيالية غير موجودة بالفعل. لا تسمح لك مصادقة Firebase بإدراج أرقام الهواتف الحالية التي يستخدمها المستخدمون الحقيقيون في القائمة البيضاء. أحد الخيارات هو استخدام 555 رقمًا مسبوقًا كأرقام هواتف تجريبية في الولايات المتحدة ، على سبيل المثال: +1 650-555-3434
  2. يجب تنسيق أرقام الهواتف بشكل صحيح وفقًا للطول والقيود الأخرى. سيستمرون في إجراء نفس التحقق من صحة رقم هاتف المستخدم الحقيقي.
  3. يمكنك إضافة ما يصل إلى 10 أرقام هواتف للتطوير.
  4. استخدم أرقام الهواتف / الرموز التجريبية التي يصعب تخمينها وقم بتغييرها بشكل متكرر.

أضف أرقام الهواتف ورموز التحقق إلى القائمة البيضاء

  1. في وحدة تحكم Firebase ، افتح قسم المصادقة .
  2. في علامة التبويب طريقة تسجيل الدخول ، قم بتمكين موفر الهاتف إذا لم تكن قد قمت بذلك بالفعل.
  3. افتح قائمة أرقام الهواتف لاختبار الأكورديون.
  4. أدخل رقم الهاتف الذي تريد اختباره ، على سبيل المثال: 3434-555-650 +1 .
  5. قدم رمز التحقق المكون من 6 أرقام لهذا الرقم المحدد ، على سبيل المثال: 654321 .
  6. أضف الرقم. إذا كانت هناك حاجة ، يمكنك حذف رقم الهاتف ورمزه بالمرور فوق الصف المقابل والنقر فوق أيقونة سلة المهملات.

الاختبار اليدوي

يمكنك البدء مباشرةً في استخدام رقم هاتف مدرج في القائمة البيضاء في تطبيقك. يتيح لك ذلك إجراء اختبار يدوي أثناء مراحل التطوير دون التعرض لمشكلات في الحصة النسبية أو تقييدها. يمكنك أيضًا الاختبار مباشرة من محاكي iOS أو محاكي Android دون تثبيت خدمات Google Play.

عند تقديم رقم الهاتف المدرج في القائمة البيضاء وإرسال رمز التحقق ، لا يتم إرسال رسالة SMS فعلية. بدلاً من ذلك ، تحتاج إلى تقديم رمز التحقق الذي تم تكوينه مسبقًا لإكمال تسجيل الدخول.

عند اكتمال تسجيل الدخول ، يتم إنشاء مستخدم Firebase برقم الهاتف هذا. يمتلك المستخدم نفس السلوك والخصائص مثل مستخدم رقم هاتف حقيقي ، ويمكنه الوصول إلى Realtime Database / Cloud Firestore والخدمات الأخرى بنفس الطريقة. الرمز المميز للمعرف الذي تم سكه أثناء هذه العملية له نفس توقيع مستخدم رقم هاتف حقيقي.

هناك خيار آخر وهو تعيين دور اختباري عبر مطالبات مخصصة على هؤلاء المستخدمين لتمييزهم كمستخدمين مزيفين إذا كنت ترغب في تقييد الوصول بشكل أكبر.

اختبار التكامل

بالإضافة إلى الاختبار اليدوي ، توفر مصادقة Firebase واجهات برمجة تطبيقات للمساعدة في كتابة اختبارات التكامل لاختبار مصادقة الهاتف. تعمل واجهات برمجة التطبيقات هذه على تعطيل التحقق من التطبيق عن طريق تعطيل متطلبات reCAPTCHA في الويب وإشعارات الدفع الصامتة في iOS. هذا يجعل اختبار الأتمتة ممكنًا في هذه التدفقات ويسهل تنفيذه. بالإضافة إلى ذلك ، فهي تساعد في توفير القدرة على اختبار تدفقات التحقق الفوري على Android.

على Android ، يمكنك بسهولة استخدام أرقام الهواتف المدرجة في القائمة البيضاء دون أي مكالمات إضافية لواجهة برمجة التطبيقات. يؤدي الاتصال بـ verifyPhoneNumber في القائمة البيضاء إلى تشغيل رد الاتصال onCodeSent ، حيث ستحتاج إلى تقديم رمز التحقق المقابل. يسمح هذا بإجراء الاختبار في محاكيات Android.

جافا

String phoneNum = "+16505554567";
String testVerificationCode = "123456";

// Whenever verification is triggered with the whitelisted number,
// provided it is not set for auto-retrieval, onCodeSent will be triggered.
PhoneAuthProvider.getInstance().verifyPhoneNumber(
        phoneNum, 30L /*timeout*/, TimeUnit.SECONDS,
        this, new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {

            @Override
            public void onCodeSent(String verificationId,
                                   PhoneAuthProvider.ForceResendingToken forceResendingToken) {
                // Save the verification id somewhere
                // ...

                // The corresponding whitelisted code above should be used to complete sign-in.
                MainActivity.this.enableUserManuallyInputCode();
            }

            @Override
            public void onVerificationCompleted(PhoneAuthCredential phoneAuthCredential) {
                // Sign in with the credential
                // ...
            }

            @Override
            public void onVerificationFailed(FirebaseException e) {
                 // ...
            }

        });

Kotlin + KTX

val phoneNum = "+16505554567"
val testVerificationCode = "123456"

// Whenever verification is triggered with the whitelisted number,
// provided it is not set for auto-retrieval, onCodeSent will be triggered.
PhoneAuthProvider.getInstance().verifyPhoneNumber(
        phoneNum, 30L /*timeout*/, TimeUnit.SECONDS,
        this, object : PhoneAuthProvider.OnVerificationStateChangedCallbacks() {

    override fun onCodeSent(
        verificationId: String,
        forceResendingToken: PhoneAuthProvider.ForceResendingToken
    ) {
        // Save the verification id somewhere
        // ...

        // The corresponding whitelisted code above should be used to complete sign-in.
        this@MainActivity.enableUserManuallyInputCode()
    }

    override fun onVerificationCompleted(phoneAuthCredential: PhoneAuthCredential) {
        // Sign in with the credential
        // ...
    }

    override fun onVerificationFailed(e: FirebaseException) {
        // ...
    }
})

بالإضافة إلى ذلك ، يمكنك اختبار تدفقات الاسترداد التلقائي في Android عن طريق تعيين الرقم المدرج في القائمة البيضاء ورمز التحقق المقابل للاسترداد التلقائي عن طريق استدعاء setAutoRetrievedSmsCodeForPhoneNumber .

عندما يتم استدعاء verifyPhoneNumber ، يتم تشغيله onVerificationCompleted مع PhoneAuthCredential مباشرة. هذا يعمل فقط مع أرقام الهواتف المدرجة في القائمة البيضاء.

تأكد من تعطيل هذا الخيار ومن عدم وجود أرقام هواتف مدرجة في القائمة البيضاء مشفرة بشكل ثابت في تطبيقك عند نشر تطبيقك على متجر Google Play.

جافا

// The test phone number and code should be whitelisted in the console.
String phoneNumber = "+16505554567";
String smsCode = "123456";

FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();
FirebaseAuthSettings firebaseAuthSettings = firebaseAuth.getFirebaseAuthSettings();

// Configure faking the auto-retrieval with the whitelisted numbers.
firebaseAuthSettings.setAutoRetrievedSmsCodeForPhoneNumber(phoneNumber, smsCode);

PhoneAuthProvider phoneAuthProvider = PhoneAuthProvider.getInstance();
phoneAuthProvider.verifyPhoneNumber(
        phoneNumber,
        60L,
        TimeUnit.SECONDS,
        this, /* activity */
        new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
            @Override
            public void onVerificationCompleted(PhoneAuthCredential credential) {
                // Instant verification is applied and a credential is directly returned.
                // ...
            }

            // ...
        });

Kotlin + KTX

// The test phone number and code should be whitelisted in the console.
val phoneNumber = "+16505554567"
val smsCode = "123456"

val firebaseAuth = Firebase.auth
val firebaseAuthSettings = firebaseAuth.firebaseAuthSettings

// Configure faking the auto-retrieval with the whitelisted numbers.
firebaseAuthSettings.setAutoRetrievedSmsCodeForPhoneNumber(phoneNumber, smsCode)

val phoneAuthProvider = PhoneAuthProvider.getInstance()
phoneAuthProvider.verifyPhoneNumber(
        phoneNumber,
        60L,
        TimeUnit.SECONDS,
        this, /* activity */
        object : PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
            override fun onVerificationCompleted(credential: PhoneAuthCredential) {
                // Instant verification is applied and a credential is directly returned.
                // ...
            }

            // ...
        })

الخطوات التالية

بعد تسجيل دخول المستخدم لأول مرة ، يتم إنشاء حساب مستخدم جديد وربطه ببيانات الاعتماد - أي اسم المستخدم وكلمة المرور أو رقم الهاتف أو معلومات موفر المصادقة - المستخدم الذي قام بتسجيل الدخول باستخدام. يتم تخزين هذا الحساب الجديد كجزء من مشروع Firebase الخاص بك ، ويمكن استخدامه لتحديد هوية مستخدم عبر كل تطبيق في مشروعك ، بغض النظر عن كيفية تسجيل المستخدم للدخول.

  • في تطبيقاتك ، يمكنك الحصول على معلومات الملف الشخصي الأساسية للمستخدم من كائن FirebaseUser . انظر إدارة المستخدمين .

  • في قاعدة بيانات Firebase Realtime وقواعد أمان التخزين السحابي ، يمكنك الحصول على معرف المستخدم الفريد للمستخدم الذي سجّل الدخول من متغير auth ، واستخدامه للتحكم في البيانات التي يمكن للمستخدم الوصول إليها.

يمكنك السماح للمستخدمين بتسجيل الدخول إلى تطبيقك باستخدام موفري مصادقة متعددين عن طريق ربط بيانات اعتماد موفر المصادقة بحساب مستخدم حالي.

لتسجيل خروج مستخدم ، قم signOut :

جافا

FirebaseAuth.getInstance().signOut();

Kotlin + KTX

Firebase.auth.signOut()