Java Firebase身份验证verifyPhoneNumber返回空引用
我正在尝试从Firebase身份验证获取验证短信 当我点击(验证我的电话号码)时,它崩溃并在verifyPhoneNumber行返回空引用 请帮帮我 我试着换电话号码 我搜索了很多,却无法解决它Java Firebase身份验证verifyPhoneNumber返回空引用,java,android,firebase,firebase-authentication,Java,Android,Firebase,Firebase Authentication,我正在尝试从Firebase身份验证获取验证短信 当我点击(验证我的电话号码)时,它崩溃并在verifyPhoneNumber行返回空引用 请帮帮我 我试着换电话号码 我搜索了很多,却无法解决它 private void sendVerificationCode(String phone) { PhoneAuthProvider.getInstance().verifyPhoneNumber( phone, // Phone numb
private void sendVerificationCode(String phone) {
PhoneAuthProvider.getInstance().verifyPhoneNumber(
phone, // Phone number to verify
60, // Timeout duration
TimeUnit.SECONDS, // Unit of timeout
this, // Activity (for callback binding)
mCallbacks); // OnVerificationStateChangedCallbacks
}
原因:java.lang.NullPointerException:空引用
在com.google.android.gms.common.internal.premissions.checkNotNull(未知)上
资料来源:2)
在com.google.firebase.auth.PhoneAuthProvider.verifyPhoneNumber上(com.google.firebase:firebase auth@@19.1.0:9)
位于com.ullb.help.VerifyPhoneActivity.sendVerificationCode(VerifyPhoneActivity.java:67)
位于com.ullb.help.VerifyPhoneActivity.onCreate(VerifyPhoneActivity.java:39)
位于android.app.Activity.performCreate(Activity.java:7383)
位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1218)
位于android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3256)
如果firestore的一切正常,但仍然无法正常工作,那么问题可能是您将回调放在了错误的位置。单击“发送”按钮后,应在“创建循环”中实现回调。如果您使用的是emulator,那么这不起作用,所以请使用真正的android device one,它会起作用。回调
private PhoneAuthProvider.OnVerificationStateChangedCallbacks mCallbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
@Override
public void onVerificationCompleted(@NonNull PhoneAuthCredential phoneAuthCredential) {
String code = phoneAuthCredential.getSmsCode();
if (code != null) {
verifyCode(code);
phoneOtpEdt.setText(code);
}
}
@Override
public void onVerificationFailed(@NonNull FirebaseException e) {
Toast.makeText(getApplicationContext(), e.getMessage() + "Verification Failed", Toast.LENGTH_SHORT).show();
}
@Override
public void onCodeSent(@NonNull String s, @NonNull PhoneAuthProvider.ForceResendingToken forceResendingToken) {
super.onCodeSent(s, forceResendingToken);
verificationID = s; //Create your own instance variable
}
};
向输入的号码发送OTP(必须输入国家代码)
验证收到的OTP
private void verifyCode(String code) {
PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationID, code);
FirebaseAuth auth = FirebaseAuth.getInstance();
auth.signInWithCredential(credential).addOnCompleteListener(LogInActivity.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// do something
} else
// do something
}
});
private void验证码(字符串码){
PhoneAuthCredential credential=PhoneAuthProvider.getCredential(验证ID,代码);
FirebaseAuth auth=FirebaseAuth.getInstance();
auth.signInWithCredential(credential).addOnCompleteListener(LogInActivity.this,new OnCompleteListener()){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
//做点什么
}否则
//做点什么
}
});
别忘了在Firebase Auth中启用电话登录方法
我希望它有帮助:)检查设备是否有google play服务,是否启用了电话身份验证。确保您提供了带有国家/地区代码的号码。请编辑问题,以显示您传递给
verifyPhoneNumber
的所有变量的准确值。我们应该能够准确复制您看到的内容。有人知道吗对这个发誓??
private void verifyCode(String code) {
PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationID, code);
FirebaseAuth auth = FirebaseAuth.getInstance();
auth.signInWithCredential(credential).addOnCompleteListener(LogInActivity.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// do something
} else
// do something
}
});