首先,我已经尝试过以下解决方案:Patrik's Solution。没用!
如果我直接从Android Studio运行,则可以完美运行,但是当我创建并安装Signed APK时会发生异常。可能会发生什么?
我的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
...
btnGoogleLogin.setOnClickListener(V -> singinGoogle());
...
}
void singinGoogle(){
Intent singinIntent = mGoogleSignInClient.getSignInIntent();
startActivityForResult(singinIntent,GOOGLE_SIGN);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==GOOGLE_SIGN){
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
try{
GoogleSignInAccount account = task.getResult(ApiException.class);
if(account!=null) {
firebaseAuthWithGoogle(account);
}
}catch (ApiException e){
Toast.makeText(this, "ERROR: "+e.getMessage(), Toast.LENGTH_LONG).show();
DialogError de = new DialogError();
FragmentManager fm = this.getSupportFragmentManager();
dec.show(fm, "");
}
}
}
private void firebaseAuthWithGoogle(GoogleSignInAccount account){
AuthCredential credential = GoogleAuthProvider.getCredential(account.getIdToken(),null);
mAuth.signInWithCredential(credential)
.addOnCompleteListener(this,task -> {
if(task.isSuccessful()){
FirebaseUser user = mAuth.getCurrentUser();
}else {
Toast.makeText(this, "The Login as Failed", Toast.LENGTH_SHORT).show();
}
});
}
我发现了问题,当我生成签名的应用程序时,Play商店会为该应用程序生成一个新的SHA1和MD5密钥。因此,解决该问题的方法只是将Play商店密钥复制到Firebase。
分步解决方案:
注意:您也可以保留由Android Studio生成的密钥,因此该应用程序将同时在调试和Google Play上运行。
希望这会有所帮助!