从Google Play商店安装应用会产生Firebase身份验证错误,但从我的计算机安装相同的APK可以正常运行

时间:2017-06-08 18:28:10

标签: java android authentication firebase

我遇到了问题 我有一个使用Firebase Auth登录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();
        }
    });

onStart:

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

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();
                    }


                }
            });
}

1 个答案:

答案 0 :(得分:3)

我遇到了同样的问题,我解决了在Firebase控制台中添加新的SHA-1密钥的问题。如果您为自己的应用启用了Google Play应用广告注册功能,则可以在Google Play开发者控制台中找到要添加到Firebase控制台的SHA-1。 在控制台中,如果您打开“发布管理”部分,您将找到“应用程序签名”选项卡,如下图所示。

App signing

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

MD5, SHA-1, SHA-256

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