Firebase PhoneAuthProvider OTP
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Firebase PhoneAuthProvider OTP相关的知识,希望对你有一定的参考价值。
我制作了一个简单的聊天应用程序,我正在尝试使用Firebases Phone Authentication添加电话号码验证。我已成功添加所有依赖项,数据库工作正常。但是当我点击发送OTP按钮时,我没有通过消息获得任何代码。
这是完整的课程。
package com.sharathnewdev.flashchatnewfirebase;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.FirebaseException;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.PhoneAuthCredential;
import com.google.firebase.auth.PhoneAuthProvider;
import java.util.concurrent.TimeUnit;
public class FB_Phone extends AppCompatActivity {
FirebaseAuth mAuth;
EditText et1, et2;
Button sendbutton, verifybutton;
PhoneAuthProvider.OnVerificationStateChangedCallbacks mCallbacks;
String Verificationcode;
private static final String TAG = "FB_Phone";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fb_phone);
et1 = findViewById(R.id.mobileNUMBERTV);
et2 = findViewById(R.id.verifyTV);
sendbutton = findViewById(R.id.sendbutton);
verifybutton = findViewById(R.id.verifybutton);
sendbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
send_Sms();
}
});
verifybutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
verify();
}
});
mAuth = FirebaseAuth.getInstance();
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);
Verificationcode = s;
Toast.makeText(getApplicationContext(), Verificationcode, Toast.LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), "The code has been sent to the user", Toast.LENGTH_SHORT).show();
}
};
}
public void send_Sms() {
String sent_code = et1.getText().toString();
Toast.makeText(getApplicationContext(), sent_code, Toast.LENGTH_SHORT).show();
PhoneAuthProvider.getInstance().verifyPhoneNumber(sent_code, 60, TimeUnit.SECONDS, this, mCallbacks);
}
public void signInWithPhone(PhoneAuthCredential credential) {
mAuth.signInWithCredential(credential).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
Toast.makeText(getApplicationContext(), "The use has been successfully signed in", Toast.LENGTH_SHORT).show();
Intent chatIntent = new Intent(FB_Phone.this, MainChatActivity.class);
startActivity(chatIntent);
}
}
});
}
public void verify() {
String recieved_code = et2.getText().toString();
VerifywithPhone(Verificationcode, recieved_code);
}
public void VerifywithPhone(String verificationcode, String recievedcode) {
PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationcode, recievedcode);
signInWithPhone(credential);
}
}
在这里,我按下发送按钮时调用send_sms方法。但它只是不通过短信发送任何东西。我试过调试它,但过程刚刚运行,没有任何反应
Logcat显示此错误
java.lang.IllegalArgumentException:如果没有verificationProof,sessionInfo,ortemprary证明,则无法创建PhoneAuthCredential。
请帮忙。我在这做错了什么。
它是如此简单,首先启动模拟器并启动您的应用程序。现在如果你有另一个项目(任何)在另一个模拟器中启动它。在另一个模拟器上启动SMS应用程序并将短信发送到运行您的应用程序的模拟器。只是模拟器编号,如5556或5554。
立即编辑您可以使用模拟器控制发送短信或拨打电话。在Eclipse中转到window-> show views-> other-> Emulator control。
https://stackoverflow.com/a/7638361/3980203
以上是关于Firebase PhoneAuthProvider OTP的主要内容,如果未能解决你的问题,请参考以下文章
无法解决:com.google.firebase:firebase-ml-vision:24.1.3;无法解决:com.google.firebase:firebase-core:20.0.2
没有创建 Firebase 应用“[DEFAULT]” - 在 Flutter 和 Firebase 中调用 Firebase.initializeApp()
如何修复 Firebase 9.0 导入错误? “尝试导入错误:‘firebase/app’不包含默认导出(导入为‘firebase’)。”