- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已按照 firebase 文档的指南实现登录到我的应用程序,但在注册时出现问题,应用程序崩溃并且 catlog 显示以下错误:
Process: app, PID: 12830
java.lang.IllegalArgumentException: Cannot create PhoneAuthCredential without either verificationProof, sessionInfo, ortemprary proof.
at com.google.android.gms.common.internal.Preconditions.checkArgument(Unknown Source)
at com.google.firebase.auth.PhoneAuthCredential.<init>(Unknown Source)
at com.google.firebase.auth.PhoneAuthProvider.getCredential(Unknown Source)
at app.MainActivity.verifyPhoneNumberWithCode(MainActivity.java:132)
at app.MainActivity.onClick(MainActivity.java:110)
at android.view.View.performClick(View.java:4803)
at android.view.View$PerformClick.run(View.java:20102)
at android.os.Handler.handleCallback(Handler.java:810)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:189)
at android.app.ActivityThread.main(ActivityThread.java:5532)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:950)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:745)
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private FirebaseAuth mAuth;
private String mVerificationId;
private PhoneAuthProvider.OnVerificationStateChangedCallbacks mCallbacks;
Button login,verify,signout;
EditText number;
EditText code;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAuth = FirebaseAuth.getInstance();
login = findViewById(R.id.btnlogin);
verify = findViewById(R.id.btnverify);
signout = findViewById(R.id.btnsignout);
number = findViewById(R.id.editnumber);
code = findViewById(R.id.editcode);
login.setOnClickListener(this);
verify.setOnClickListener(this);
signout.setOnClickListener(this);
mCallbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
@Override
public void onVerificationCompleted(PhoneAuthCredential phoneAuthCredential) {
signInWithPhoneAuthCredential(phoneAuthCredential);
}
@Override
public void onVerificationFailed(FirebaseException e) {
Toast.makeText(MainActivity.this, "Error" + e.toString(), Toast.LENGTH_SHORT).show();
if (e instanceof FirebaseAuthInvalidCredentialsException) {
Toast.makeText(MainActivity.this, "Invalid Request " + e.toString(), Toast.LENGTH_SHORT).show();
} else if (e instanceof FirebaseTooManyRequestsException) {
Toast.makeText(MainActivity.this, "The SMS quota for the project has been exceeded " + e.toString(), Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCodeSent(String vId, PhoneAuthProvider.ForceResendingToken forceResendingToken) {
Toast.makeText(MainActivity.this, "Code Sent" + vId, Toast.LENGTH_SHORT).show();
number.setText("");
mVerificationId = vId;
}
};
}
private void signInWithPhoneAuthCredential(PhoneAuthCredential phoneAuthCredential) {
mAuth.signInWithCredential(phoneAuthCredential).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isComplete()){
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String uid = null;
if (user != null) {
uid = user.getUid();
}
Toast.makeText(MainActivity.this, "Signed In", Toast.LENGTH_SHORT).show();
Toast.makeText(MainActivity.this, uid, Toast.LENGTH_SHORT).show();
} else {
if (task.getException() instanceof FirebaseAuthInvalidCredentialsException) {
Toast.makeText(MainActivity.this, "Invalid Code", Toast.LENGTH_SHORT).show();
}
}
}
});
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnlogin: {
String phonenumber = number.getText().toString();
startPhoneNumberVerification(phonenumber);
}
case R.id.btnverify: {
String vCode = code.getText().toString();
verifyPhoneNumberWithCode(mVerificationId, vCode);
}
case R.id.btnsignout: {
mAuth.signOut();
}
}
}
private void startPhoneNumberVerification(String phoneNumber) {
PhoneAuthProvider.getInstance().verifyPhoneNumber(phoneNumber, 60, TimeUnit.SECONDS, this, mCallbacks);
}
private void verifyPhoneNumberWithCode(String verificationId, String code) {
PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationId, code);
signInWithPhoneAuthCredential(credential);
}
}
最佳答案
您获得的号码没有国家代码,例如 +91 使用国家代码或使用
字符串 withCountryCode = "+91"+code
PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationId, withCountryCode);
登录WithPhoneAuthCredential(凭据);
关于java - 没有验证证明无法创建 PhoneAuthCredential?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53995088/
我正在使用 Firebase 开发 Android 应用程序,并启用了电话号码身份验证作为用户登录方法。这一切都很好。 在我的应用程序中,我有一个帐户详细信息页面,允许用户编辑他们的信息并更新他们在
我已按照 firebase 文档的指南实现登录到我的应用程序,但在注册时出现问题,应用程序崩溃并且 catlog 显示以下错误: Process: app, PID: 12830 java.l
我想在 Flutter 项目中使用 FirebaseAuth 链接电话和电子邮件身份验证。 步骤如下: auth = FirebaseAuth.instance; 获取用户的电话号码并使用 auth.
自从我上周更新了我的 Firebase 之后,我的手机验证就开始工作了。从那时起,我面临的问题是,在我将用户电子邮件连接到电话号码的链接过程中不再有效:java.lang.IllegalArgumen
我正在处理 火力基地电话验证,收到我的电话号码上的代码后,代码跳转到verifysignincode()方法,创建失败phoneAuthCredentials .程序捕获的异常是“如果没有 Phone
用户通过电子邮件身份验证登录我的应用程序。一旦进入,他们就可以浏览和搜索不同的东西。但如果用户想要发布,他们必须验证他们的电话号码(如果他们不想发布他们的电话号码,则不需要)。 电话号码和短信流程工作
我正在使用 firebase 和 android studio。我在尝试删除用户时遇到了一个问题。访问我的应用程序的唯一方法是电话号码身份验证。 我已经知道当我删除用户时,必须重新验证。所以我引用了
在 Firebase 新更新“com.google.firebase:firebase-auth:20.0.0”之后大家好 我开始收到此错误,但后来我发现了它的原因。 点击发送验证码后发生,错误看起来
这个异常发生在我的代码帮助中。我的所有代码都发布在下面。 java.lang.IllegalArgumentException: Cannot create PhoneAuthCredential w
我是一名优秀的程序员,十分优秀!