Selon la documentation de Firebase ( https://firebase.google.com/docs/auth/Android/phone-auth#send-a-verification-code-to-the-users-phone ), il existe callback
pour gérer l'authentification du numéro de téléphone.
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;
}
};
Ma question concerne la méthode onCodeSent
. C'est écrit ici sur la doc ( https://firebase.google.com/docs/reference/Android/com/google/firebase/auth/PhoneAuthProvider.ForceResendingToken )
que token
peut être utilisé pour forcer le renvoi d’un code de vérification SMS. Cependant, après quelques recherches sur la doc, je ne sais toujours pas comment.
Je voudrais demander comment utiliser cette token
pour renvoyer la vérification SMS?
Source: Github
C'est la méthode utilisée pour renvoyer les SMS vérifications.
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
}
vous pouvez utiliser une méthode Firebase pour renvoyer le code de vérification sous la forme PERSISTENCE par exemple et intercepter le code sms pour l'archivage automatique, par exemple lors de l'exécution d'une boîte de dialogue de progression, et transparente pour l'utilisateur.
// [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]
}
vérifier le sms avec le récepteur de diffusion dans un 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);
}
};
}