wake-up-neo.com

So senden Sie es erneut SMS Überprüfung in Firebase Phone Authentication Android?

Laut Firebase-Dokumentation ( https://firebase.google.com/docs/auth/Android/phone-auth#send-a-verification-code-to-the-users-phone ) gibt es callback für Umgang mit der Authentifizierung der Telefonnummer.

mCallbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {

    @Override
    public void onVerificationCompleted(PhoneAuthCredential credential) {

        Log.d(TAG, "onVerificationCompleted:" + credential);
        signInWithPhoneAuthCredential(credential);
    }

    @Override
    public void onVerificationFailed(FirebaseException e) {

        Log.w(TAG, "onVerificationFailed", e);
    }

    @Override
    public void onCodeSent(String verificationId,
                           PhoneAuthProvider.ForceResendingToken token) {

        Log.d(TAG, "onCodeSent:" + verificationId);

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

Meine Frage bezieht sich auf die Methode onCodeSent. Es stand hier auf dem Dokument ( https://firebase.google.com/docs/reference/Android/com/google/firebase/auth/PhoneAuthProvider.ForceResendingToken )

dass die token verwendet werden kann, um das erneute Senden eines SMS Bestätigungscodes zu erzwingen. Nach einigen Recherchen zum Dokument weiß ich jedoch immer noch nicht, wie.

Ich möchte fragen, wie ich diese token verwenden kann, um die SMS -Verifizierung erneut zu senden.

6
Boonya Kitpitak

Quelle: Github

Diese Methode wird verwendet, um SMS Verifications erneut zu senden.

private void resendVerificationCode(String phoneNumber,
                                    PhoneAuthProvider.ForceResendingToken token) {
    PhoneAuthProvider.getInstance().verifyPhoneNumber(
            phoneNumber,        // Phone number to verify
            60,                 // Timeout duration
            TimeUnit.SECONDS,   // Unit of timeout
            this,               // Activity (for callback binding)
            mCallbacks,         // OnVerificationStateChangedCallbacks
            token);             // ForceResendingToken from callbacks
}
14
GGWP

sie können eine Firebase-Methode verwenden, um Bestätigungscode wie PERSISTENCE erneut zu senden und den SMS-Code abzufangen, um automatisch einchecken zu können, beispielsweise während eines Fortschrittsdialogs, und transparent für den Benutzer, einfach welcher

// [START resend_verification]
public void resendVerificationCode(String phoneNumber,
                                   PhoneAuthProvider.ForceResendingToken token) {
    PhoneAuthProvider.getInstance().verifyPhoneNumber(
            phoneNumber,        // Phone number to verify
            60,                 // Timeout duration
            TimeUnit.SECONDS,   // Unit of timeout
            activity,           //a reference to an activity if this method is in a custom service
            mCallbacks);        // resending
    // [END start_phone_auth]
}

Überprüfen Sie die SMS mit dem Broadcast-Empfänger in einem Fragment

private BroadcastReceiver smsBroadcastReceiver;
IntentFilter filter = new IntentFilter("Android.provider.Telephony.SMS_RECEIVED");
public static final String SMS_BUNDLE = "pdus";

 @Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    smsBroadcastReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            Log.e("smsBroadcastReceiver", "onReceive");
            Bundle pudsBundle = intent.getExtras();
            Object[] pdus = (Object[]) pudsBundle.get(SMS_BUNDLE);
            SmsMessage messages = SmsMessage.createFromPdu((byte[]) pdus[0]);
            Log.i(TAG,  messages.getMessageBody());

            firebaseVerificationCode = messages.getMessageBody().trim().split(" ")[0];//only a number code 
            Toast.makeText(getContext(), firebaseVerificationCode,Toast.LENGTH_SHORT).show();
            String token = firebaseAutenticationService.getVerificationCode();//your service
        firebaseAutenticationService.verifyPhoneNumberWithCode(token,verificationCode);
        }
    };
}
0
chry