Je suis vraiment nouveau sur Android firebase et j'ai implémenté les bibliothèques nécessaires pour Firebase Auth. J'essaie de mettre un numéro valide, mais le journal dit:
W/JEJE: onVerificationFailed
com.google.firebase.FirebaseException: An internal error has occurred. [ INVALID_APP_CREDENTIAL:App validation failed ]
at com.google.Android.gms.internal.nf.zzK(Unknown Source)
at com.google.Android.gms.internal.og.zza(Unknown Source)
at com.google.Android.gms.internal.oh.run(Unknown Source)
at Android.os.Handler.handleCallback(Handler.Java:751)
at Android.os.Handler.dispatchMessage(Handler.Java:95)
at Android.os.Looper.loop(Looper.Java:154)
at Android.app.ActivityThread.main(ActivityThread.Java:6176)
at Java.lang.reflect.Method.invoke(Native Method)
at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:888)
at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:778)
Voici mon code:
public class MainActivity extends AppCompatActivity {
private static String mVerificationId;
private static PhoneAuthProvider.ForceResendingToken mResendToken;
private static FirebaseAuth mAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText editText = (EditText) findViewById(R.id.phone);
Button submit = (Button) findViewById(R.id.submit);
final PhoneAuthProvider.OnVerificationStateChangedCallbacks mCallBacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
@Override
public void onVerificationCompleted(PhoneAuthCredential phoneAuthCredential) {
Log.d("JEJE", "onVerificationCompleted:" + phoneAuthCredential);
signInWithPhoneAuthCredential(phoneAuthCredential);
}
@Override
public void onVerificationFailed(FirebaseException e) {
Log.w("JEJE", "onVerificationFailed", e);
if (e instanceof FirebaseAuthInvalidCredentialsException) {
Log.d("JEJE", "INVALID REQUEST");
} else if (e instanceof FirebaseTooManyRequestsException) {
Log.d("JEJE", "Too many Request");
}
}
@Override
public void onCodeSent(String s, PhoneAuthProvider.ForceResendingToken forceResendingToken) {
super.onCodeSent(s, forceResendingToken);
Log.d("JEJE", "onCodeSent:" + s);
mVerificationId = s;
mResendToken = forceResendingToken;
}
};
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String phoneNum = editText.getText().toString();
Toast.makeText(MainActivity.this, phoneNum, Toast.LENGTH_SHORT).show();
verifyPhone(phoneNum,mCallBacks);
}
});
}
private void signInWithPhoneAuthCredential(PhoneAuthCredential phoneAuthCredential) {
mAuth.signInWithCredential(phoneAuthCredential).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()){
FirebaseUser user = task.getResult().getUser();
}else {
if (task.getException() instanceof FirebaseAuthInvalidCredentialsException) {
// The verification code entered was invalid
}
}
}
});
}
public void verifyPhone(String phoneNumber, PhoneAuthProvider.OnVerificationStateChangedCallbacks mCallbacks){
PhoneAuthProvider.getInstance().verifyPhoneNumber(
"+639952874699", // Phone number to verify
60, // Timeout duration
TimeUnit.SECONDS, // Unit of timeout
this, // Activity (for callback binding)
mCallbacks); // OnVerificationStateChangedCallback
}
}
s'il vous plaît dites-moi ce qui ne va pas merci ..
Ajouter SHA Empreinte de certificat résout mon problème. Eh bien, je suis assez nouveau pour cela, mais j'ai réussi à montrer la sortie et j'ai été en mesure de recevoir une vérification par SMS.
Pour référence, voici mes codes: https://github.com/coozgan/TestingPhoneAuth
J'ai eu exactement le même problème que le vôtre. Même si j'ai téléchargé les deux SHA1, l'invite "Erreur de connexion du téléphone" est toujours affichée.
Vous devez associer le projet Firebase à Google Play.
Allez sur https://console.firebase.google.com/u/0/project/you-project-name/settings/accountlinking et cliquez en bas à droite sur "Lien vers Google Play".
Au bout d’un moment, je vais résumer tout ce que j’ai découvert sur la vérification par téléphone. Il y a quelques choses que vous devez faire et dont vous devez vous souvenir pour que cela fonctionne.
Voici la liste des tâches à accomplir pour que cela fonctionne:
compile 'com.google.firebase:firebase-auth:11.0.4'
de Gradle.Authentication
dans le menu. Ensuite, allez à Sign-in Method
et assurez-vous d'activer le fournisseur de téléphone. keytool -exportcert -list -v -alias androiddebugkey -keystore % USERPROFILE% \. Android\debug.keystore
comme mentionné dans le guide firebase pour cela. Notez que cette commande est en ligne, alors exécutez-la tous ensemble. Elle cherchera votre fichier debug.keystore sur votre utilisateur dans un dossier caché appelé .Android. L'alias par défaut du magasin de clés est androiddebugkey
, ne le modifiez pas. Le mot de passe par défaut est Android
. Ainsi, lorsqu'il vous demande un mot de passe, utilisez simplement "Android" . Sha-1. Mettez-le dans votre projet.
Notez également que ceci est écrit du 16 août 2017, vous ne pouvez pas vérifier le téléphone sur un émulateur, utilisez donc un vrai périphérique.
J'espère que ça aide.
Merci saurabh Yadav pour la barre oblique manquante;) Apparemment, je dois mettre 2 barres obliques ici pour qu'elle soit visible.
J'ai aussi le même problème.
Après avoir lu du contenu, j'ai trouvé un autre problème et après avoir exécuté mon application.
Problème 1: this link dit que,
Notez également que la connexion au numéro de téléphone nécessite un périphérique physique et ne fonctionne pas sur un émulateur.
Alors pouvez-vous tester et exécuter uniquement sur le périphérique réel, pas n'importe quel émulateur.
Si vous pouvez utiliser l'émulateur, la même erreur se produit.
Vous pouvez vous référer à mon github this link pour l'exemple de connexion de téléphone Firebase
Si vous optez pour une version signée et que vous la mettez dans Play Store, le sha1 de Play Store doit être identique à l'empreinte sha1 de Firebase. Et une fois que vous avez terminé, vous devez lier votre application au Play Store via firebase. Remplacez le nouveau fichier google-services.json dans votre application Android par celui créé dans le compte firebase après le changement de clé sha1.
Essayez de mettre à jour votre bibliothèque firebase-tools vers la dernière version, puis appelez logb firebase logout, suivi de la connexion firebase.