从 Google Play 商店安装应用程序会出现 Firebase 身份验证错误,但从我的计算机安装相同的 APK 效果很好

ort*_*e28 3 java authentication android firebase

我有一个问题,我有一个使用 Firebase 身份验证通过 Google 登录的应用程序。我将发布 APK 作为 Alpha 版本上传到 Google Play 商店,但是当我下载它以在我的手机上测试它时,它给出了身份验证错误,但是,当我将相同的 apk 从我的计算机下载到我的手机时,它运行良好。

在我的主要

    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestIdToken(getString(R.string.default_web_client_id))
            .requestEmail()
            .build();

    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
            .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
            .build();

    mAuth = FirebaseAuth.getInstance();

    findViewById(R.id.signIn).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            signIn();
        }
    });
Run Code Online (Sandbox Code Playgroud)

开始:

 FirebaseUser currentUser = mAuth.getCurrentUser();
    if(currentUser!=null)
    {
        startActivity(new Intent(LoginActivity.this, MainActivity.class));
    }
Run Code Online (Sandbox Code Playgroud)

private void signIn() {
    Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
    startActivityForResult(signInIntent, RC_SIGN_IN);
}



@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == RC_SIGN_IN) {
        GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
        if (result.isSuccess()) {
            GoogleSignInAccount account = result.getSignInAccount();
            firebaseAuthWithGoogle(account);

        } else {


            Toast.makeText(LoginActivity.this, "Authentication failed, please try again",
                    Toast.LENGTH_SHORT).show();
        }
    }
}

private void firebaseAuthWithGoogle(GoogleSignInAccount acct) {

    AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
    mAuth.signInWithCredential(credential)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        FirebaseUser user = mAuth.getCurrentUser();
                        startActivity(new Intent(LoginActivity.this, MainActivity.class));
                    } else {
                        // If sign in fails, display a message to the user.
                       System.out.println(task.getResult().toString());
                        Toast.makeText(LoginActivity.this, "Authentication failed, please try again",
                                Toast.LENGTH_SHORT).show();
                    }


                }
            });
}
Run Code Online (Sandbox Code Playgroud)

Mat*_*ero 5

我遇到了同样的问题,我在 Firebase 控制台中添加了一个新的 SHA-1 密钥来解决它。如果您为您的应用启用 Google Play 应用签名,您可以在 Google Play 开发者控制台中找到要添加到 Firebase 控制台的 SHA-1。在控制台中,如果您打开“版本管理”部分,您将找到“应用签名”选项卡,如下图所示。

应用签名

在此页面中,您将找到一个名为“应用签名证书”的部分,您可以在其中看到 MD5 证书指纹、SHA-1 证书指纹和 SHA-256 证书指纹,如下图所示。

MD5、SHA-1、SHA-256

您必须在 Firebase 控制台中复制 SHA-1 证书指纹,以及密钥库的调试 SHA-1 和发行版 SHA-1。