android - 如何添加重新发送otp firebase android的代码
问题描述
我是一个新的应用程序开发人员,试图添加我的 otp firebase 项目服务,我添加它并且它现在可以工作但我不知道我可以添加重新发送 otp 的代码。如果用户迟到检查号码,他会得到一个重新发送代码。
在我发布问题之前,我检查了网站上以前发布的类似主题,但它对我不起作用。
这是我的代码:
public class VerifyPhoneActivity extends AppCompatActivity {
private String verificationId;
private FirebaseAuth mAuth;
private ProgressBar progressBar;
private EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_verify_phone);
mAuth = FirebaseAuth.getInstance();
progressBar = findViewById(R.id.progressbar);
editText = findViewById(R.id.editTextCode);
findViewById(R.id.tt).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//=======here I want add it==============///////////
}
});
String phonenumber = getIntent().getStringExtra("phonenumber");
sendVerificationCode(phonenumber);
findViewById(R.id.buttonSignIn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String code = editText.getText().toString().trim();
if (code.isEmpty() || code.length() < 6) {
editText.setError("Enter code...");
editText.requestFocus();
return;
}
verifyCode(code);
}
});
}
private void verifyCode(String code) {
PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationId, code);
signInWithCredential(credential);
}
private void signInWithCredential(PhoneAuthCredential credential) {
mAuth.signInWithCredential(credential)
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
Intent intent = new Intent(VerifyPhoneActivity.this, ProfileActivitytt.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
} else {
Toast.makeText(VerifyPhoneActivity.this, task.getException().getMessage(), Toast.LENGTH_LONG).show();
}
}
});
}
private void sendVerificationCode(String number) {
progressBar.setVisibility(View.VISIBLE);
PhoneAuthProvider.getInstance().verifyPhoneNumber(
number,
20,
TimeUnit.SECONDS,
TaskExecutors.MAIN_THREAD,
mCallBack
);
}
private PhoneAuthProvider.OnVerificationStateChangedCallbacks
mCallBack = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
@Override
public void onCodeSent(String s, PhoneAuthProvider.ForceResendingToken forceResendingToken) {
super.onCodeSent(s, forceResendingToken);
verificationId = s;
}
@Override
public void onVerificationCompleted(PhoneAuthCredential phoneAuthCredential) {
String code = phoneAuthCredential.getSmsCode();
if (code != null) {
editText.setText(code);
verifyCode(code);
}
}
@Override
public void onVerificationFailed(FirebaseException e) {
Toast.makeText(VerifyPhoneActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();
}
};
}
解决方案
只需sendVerificationCode(String number)
再次调用,单击重新发送按钮
推荐阅读
- c++ - 如何使用 ReadFile 修复乱码文本?
- php - 如何找出 Symfony 设置 PHPSESSID cookie 的原因/位置?
- apache-kafka - Apache Kafka 日志保留配置问题或如何配置 Kafka 保留策略?
- java - 如何使用 Apache POI 从特定行读取特定的 excel 列
- apache-spark - spark-cassnadra 连接器问题
- python - 返回 bin 坐标 python
- python - 在 Jupyter Notebook 中创建新笔记本时出错 [权限被拒绝]
- android - 多重扩展文件
- python - Python Cocos2d 调整大小后找不到资源图像
- python - 带有 Yattag 的 HTML 表格 - 创建新的 TR