Shi*_*ngh 5 android firebase firebase-authentication
我的应用程序工作正常,直到我在 Android Studio 中生成一个签名的 APK,当我对签名的 Apk 进行身份验证时,它只显示一个 Toast“无法验证电话并创建帐户”。它在调试模式下运行良好。当我制作调试 APK 时,它在其中也运行良好,但在签名 APK 中却运行良好。我无法弄清楚导致此错误的原因是身份验证在仅签名的 APK 中不起作用
我的代码
public class Register2 extends AppCompatActivity {
FirebaseAuth auth;
DatabaseReference reference;
String otpCode;
String verificationId;
MaterialEditText phone, optEnter;
Button next;
CountryCodePicker countryCodePicker;
PhoneAuthCredential credential;
Boolean verificationOnProgress = false;
ProgressBar progressBar;
TextView resend;
PhoneAuthProvider.ForceResendingToken token;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register2);
phone = findViewById(R.id.phone);
optEnter = findViewById(R.id.codeEnter);
countryCodePicker = findViewById(R.id.ccp);
next = findViewById(R.id.nextBtn);
auth = FirebaseAuth.getInstance();
progressBar = findViewById(R.id.progressBar);
resend = findViewById(R.id.resendOtpBtn);
resend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// todo:: resend OTP
}
});
next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!phone.getText().toString().isEmpty() && phone.getText().toString().length() == 10) {
if (!verificationOnProgress) {
next.setEnabled(false);
String phoneNum = "+" + countryCodePicker.getSelectedCountryCode() + phone.getText().toString();
Log.d("phone", "Phone No.: " + phoneNum);
progressBar.setVisibility(View.VISIBLE);
requestPhoneAuth(phoneNum);
} else {
next.setEnabled(false);
optEnter.setVisibility(View.GONE);
progressBar.setVisibility(View.VISIBLE);
otpCode = optEnter.getText().toString();
if (otpCode.isEmpty()) {
optEnter.setError("Required");
return;
}
credential = PhoneAuthProvider.getCredential(verificationId, otpCode);
verifyAuth(credential);
}
} else {
phone.setError("Valid Phone Required");
}
}
});
}
private void requestPhoneAuth(String phoneNumber) {
PhoneAuthProvider.getInstance().verifyPhoneNumber(phoneNumber, 60L, TimeUnit.SECONDS, this,
new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
@Override
public void onCodeAutoRetrievalTimeOut(String s) {
super.onCodeAutoRetrievalTimeOut(s);
Toast.makeText(Register2.this, "OTP Timeout, Please Re-generate the OTP Again.", Toast.LENGTH_SHORT).show();
resend.setVisibility(View.VISIBLE);
}
@Override
public void onCodeSent(String s, PhoneAuthProvider.ForceResendingToken forceResendingToken) {
super.onCodeSent(s, forceResendingToken);
verificationId = s;
token = forceResendingToken;
verificationOnProgress = true;
progressBar.setVisibility(View.GONE);
next.setText("Verify");
next.setEnabled(true);
optEnter.setVisibility(View.VISIBLE);
}
@Override
public void onVerificationCompleted(PhoneAuthCredential phoneAuthCredential) {
verifyAuth(phoneAuthCredential);
}
@Override
public void onVerificationFailed(FirebaseException e) {
Toast.makeText(Register2.this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
private void verifyAuth(PhoneAuthCredential credential) {
auth.signInWithCredential(credential).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
Toast.makeText(Register2.this, "Phone Verified", Toast.LENGTH_SHORT).show();
FirebaseUser firebaseUser = auth.getCurrentUser();
String userid = firebaseUser.getUid();
reference = FirebaseDatabase.getInstance().getReference().child("UserIds").child(userid);
reference.setValue(true);
//checkUserProfile();
} else {
progressBar.setVisibility(View.GONE);
Toast.makeText(Register2.this, "Can not Verify phone and Create Account.", Toast.LENGTH_SHORT).show();
}
}
});
}
@Override
protected void onStart() {
super.onStart();
if (auth.getCurrentUser() != null) {
progressBar.setVisibility(View.VISIBLE);
checkUserProfile();
}
}
private void checkUserProfile() {
Intent intent = new Intent(Register2.this, Details3.class);
startActivity(intent);
}
}
Run Code Online (Sandbox Code Playgroud)
将应用程序上传到 Google Play 商店后,您必须在 Firebase 中更新 SHA-1/SHA-255 指纹。您将在 Play 商店中找到给定的 SHA-1/SHA-255。
现在,将 SHA-1/SHA-255 添加到 firebase,您的应用程序将再次返回。
| 归档时间: |
|
| 查看次数: |
929 次 |
| 最近记录: |