将相本无种,男儿当自强。这篇文章主要讲述firebase phone auth android崩溃相关的知识,希望能为你提供帮助。
【firebase phone auth android崩溃】所以我正在使用firebase数据库和Auth,我正在尝试构建Phone Auth但由于某种原因应用程序崩溃..不知道为什么..我是新的编程与android工作室和Firebase数据库上的第一个计时器,不知道为什么应用程序崩溃,但它崩溃后,我按下一个激活verifySignInCode()insta崩溃的按钮后,它确实发送一个代码为电子邮件的邮件错误在这里
09-15 20:39:41.804 22046-22046/com.example.erelpc.calltest E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.erelpc.calltest, PID: 22046
java.lang.IllegalArgumentException: Cannot create PhoneAuthCredential without either verificationProof, sessionInfo, ortemprary proof.
at com.google.android.gms.common.internal.Preconditions.checkArgument(Unknown Source:8)
at com.google.firebase.auth.PhoneAuthCredential.<
init>
(Unknown Source:6)
at com.google.firebase.auth.PhoneAuthProvider.getCredential(Unknown Source:33)
at com.example.erelpc.calltest.MainActivity.verifySignInCode(MainActivity.java:92)
at com.example.erelpc.calltest.MainActivity.access$100(MainActivity.java:28)
at com.example.erelpc.calltest.MainActivity$2.onClick(MainActivity.java:61)
at android.view.View.performClick(View.java:6877)
这是MainActivity
/// SMS Handler
private void sendVerificationCode(){
String phone = etphonenumber.getText().toString();
if (phone.isEmpty()) {
etphonenumber.setError("Enter a Phone Number!");
etphonenumber.requestFocus();
return;
}
if (phone.length() != 9){
etphonenumber.setError("Please Enter a valid Number!");
etphonenumber.requestFocus();
return;
}
phone = "+972" + phone;
Intent intent =new Intent(this, loginsuccess.class);
PhoneAuthProvider.getInstance().verifyPhoneNumber(
phone,// Phone number to verify
60,// Timeout duration
TimeUnit.SECONDS,// Unit of timeout
this,// Activity (for callback binding)
mCallbacks);
// OnVerificationStateChangedCallbacks
}
private void verifySignInCode(){String code = etcodeveri.getText().toString();
PhoneAuthCredential credential = PhoneAuthProvider.getCredential(codesent, code);
signInWithPhoneAuthCredential(credential);
}PhoneAuthProvider.OnVerificationStateChangedCallbacks mCallbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
@Override
public void onVerificationCompleted(PhoneAuthCredential phoneAuthCredential) {}@Override
public void onVerificationFailed(FirebaseException e) {}@Override
public void onCodeSent(String s, PhoneAuthProvider.ForceResendingToken forceResendingToken) {
super.onCodeSent(s, forceResendingToken);
codesent = s;
}
};
private void signInWithPhoneAuthCredential(PhoneAuthCredential credential) {
mAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<
AuthResult>
() {
@Override
public void onComplete(@NonNull Task<
AuthResult>
task) {
if (task.isSuccessful()) {
Toast.makeText(getApplicationContext(), "Login Success!", Toast.LENGTH_SHORT).show();
registerModule();
} else {
if (task.getException() instanceof FirebaseAuthInvalidCredentialsException) {
Toast.makeText(getApplicationContext(), "Login Unsuccess!", Toast.LENGTH_SHORT).show();
}
}
}
});
}
public void registerModule(){
Intent intent =new Intent(this, loginsuccess.class);
startActivity(intent);
}
按下“btnAdd”后发生崩溃
答案该应用程序崩溃,因为该方法没有获得有效的
credential
使phoneAuth
工作。这可以通过在try
方法上使用catch
和signInWithPhoneAuthCredential()
来解决。在代码中它看起来像这样:
private void verifyCode(){String code = cd.getText().toString();
// this is OTP
String pH = phone.getText().toString();
// this is phone number
if(code.equals("") &
&
pH.equals(""))
Toast.makeText(MainActivity.this,"Nothing to validate", Toast.LENGTH_SHORT).show();
else {
try {
PhoneAuthCredential credential = PhoneAuthProvider.getCredential(otp, code);
signInWithPhoneAuthCredential(credential);
}
catch (Exception e) {
Log.i("exception",e.toString());
Toast.makeText(MainActivity.this,"Invalid credentials",Toast.LENGTH_LONG).show();
}}
}
此外,你应该放置更多的
catch
或if
语句,以避免在方法中给出null
值。推荐阅读
- 如何在Android Studio中删除代码格式化中不必要的空白行
- 更改Cordova项目的android包名称
- 如何从android pie中的内容uri获取文件路径
- 什么可能导致已发布的Android应用程序自发停止为大量用户工作()
- 如何在Android Studio模拟器中安装Google Play应用()
- 在新控制台中停止推出Android应用程序更新
- 在Google Play商店中更新Android应用时是否删除了文件夹()
- Android应用不会在Play商店中更新
- 如何将mapping.txt上传到PlayStore