我无法对android进行电话身份验证。
但是我可以通过设置验证码进行手动身份验证。
我想动态验证任何国家/地区的电话身份验证。
我已经尝试使用国家/地区代码给定,但是我只得到显示的结果
无效的电话号码
这是我的代码
public class PhoneLogActivity extends AppCompatActivity {
private Button sendVerificationCodeButton, VerifyButton;
private EditText inputPhon_number, input_varification_code;
private PhoneAuthProvider.OnVerificationStateChangedCallbacks callbacks;
private String mVerificationId;
private PhoneAuthProvider.ForceResendingToken mResendToken;
private FirebaseAuth mAuth;
private ProgressDialog loddingBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_phone_log);
mAuth = FirebaseAuth.getInstance();
inputPhon_number = (EditText) findViewById(R.id.phone_num_input);
input_varification_code = (EditText) findViewById(R.id.Verification_code_input);
sendVerificationCodeButton = (Button) findViewById(R.id.sendVerification_code);
VerifyButton = (Button) findViewById(R.id.Verify_num);
loddingBar = new ProgressDialog(this);
sendVerificationCodeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String phone_number = inputPhon_number.getText().toString();
if (TextUtils.isEmpty(phone_number)) {
Toast.makeText(PhoneLogActivity.this, "please enter phone Number", Toast.LENGTH_SHORT).show();
} else {
loddingBar.setTitle("phone Verificatiion");
loddingBar.setMessage("Please Wait....");
loddingBar.setCanceledOnTouchOutside(false);
loddingBar.show();
PhoneAuthProvider.getInstance().verifyPhoneNumber(
phone_number, // Phone number to verify
60, // Timeout duration
TimeUnit.SECONDS, // Unit of timeout
PhoneLogActivity.this, // Activity (for callback binding)
callbacks); // OnVerificationStateChangedCallbacksPhoneAuthActivity.java
}
}
});
callbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
@Override
public void onVerificationCompleted(PhoneAuthCredential phoneAuthCredential) {
signInWithPhoneAuthCredential(phoneAuthCredential);
}
@Override
public void onVerificationFailed(FirebaseException e) {
loddingBar.dismiss();
Toast.makeText(PhoneLogActivity.this, "Invalide! Please input Correct Phone number with Country code...", Toast.LENGTH_SHORT).show();
sendVerificationCodeButton.setVisibility(View.VISIBLE);
inputPhon_number.setVisibility(View.VISIBLE);
input_varification_code.setVisibility(View.INVISIBLE);
VerifyButton.setVisibility(View.INVISIBLE);
}
public void onCodeSent(String verificationId,
PhoneAuthProvider.ForceResendingToken token) {
// Save verification ID and resending token so we can use them later
mVerificationId = verificationId;
mResendToken = token;
loddingBar.dismiss();
Toast.makeText(PhoneLogActivity.this, "Verification code has been sent", Toast.LENGTH_SHORT).show();
sendVerificationCodeButton.setVisibility(View.INVISIBLE);
inputPhon_number.setVisibility(View.INVISIBLE);
input_varification_code.setVisibility(View.VISIBLE);
VerifyButton.setVisibility(View.VISIBLE);
}
};
VerifyButton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick (View v)
{
sendVerificationCodeButton.setVisibility(View.INVISIBLE);
inputPhon_number.setVisibility(View.INVISIBLE);
String verificationcade = input_varification_code.getText().toString();
if (TextUtils.isEmpty(verificationcade)) {
Toast.makeText(PhoneLogActivity.this, "please enter Verification code", Toast.LENGTH_SHORT).show();
} else {
loddingBar.setTitle("Code Verificatiion");
loddingBar.setMessage("Please Wait....");
loddingBar.setCanceledOnTouchOutside(false);
loddingBar.show();
PhoneAuthCredential credential = PhoneAuthProvider.getCredential(mVerificationId, verificationcade);
signInWithPhoneAuthCredential(credential);
}
}
});
}
private void signInWithPhoneAuthCredential(PhoneAuthCredential credential) {
mAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// Sign in success, update UI with the signed-in user's information
loddingBar.dismiss();
Toast.makeText(PhoneLogActivity.this,"Congratulations!, You are logged in successfuly",Toast.LENGTH_SHORT).show();
sendUserToMainActivity();
}
else
{
String message= task.getException().toString();
Toast.makeText(PhoneLogActivity.this,message,Toast.LENGTH_SHORT).show();
}
}
});
}
private void sendUserToMainActivity() {
Intent mainIntent= new Intent(PhoneLogActivity.this,MainActivity.class);
startActivity(mainIntent);
finish();
}
}