Firebase Google 登录开发人员错误

Posted

技术标签:

【中文标题】Firebase Google 登录开发人员错误【英文标题】:Firebase Google Sign-in DEVELOPER ERROR 【发布时间】:2018-04-25 07:16:41 【问题描述】:

我正在尝试对我的 android 应用使用 firebase google 身份验证。首先,我将 Google Client 初始化为文档:

 gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestIdToken(getString(R.string.default_web_client_id))
                .requestEmail()
                .build()
 mGoogleSignInClient = GoogleSignIn.getClient(this, gso);

Google 登录按钮点击监听器:

googleSignInBtn.setOnClickListener(
        val signInIntent = mGoogleSignInClient.signInIntent
        startActivityForResult(signInIntent, RC_SIGN_IN) 
       )

我的活动结果:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) 
                super.onActivityResult(requestCode, resultCode, data)
                if (requestCode == RC_SIGN_IN) 
                    val task: Task<GoogleSignInAccount> = GoogleSignIn.getSignedInAccountFromIntent(data)
                    try 
                        val account = task.getResult(ApiException::class.java)
                        firebaseAuthWithGoogle(account)
                     catch (e: ApiException) 
                        Log.w(TAG, "Google sign in failed status code:"+e.statusCode);
                    
                 
            

我将发布和调试 sha-1 指纹都添加到了 Firebase 控制台。调试模式没有问题,它可以工作。但是当我在发布模式下尝试时,我得到了 DEVELOPER ERROR。我该如何解决这个问题?谢谢。

【问题讨论】:

我也在为同样的问题而苦苦挣扎。你找到解决办法了吗? 从 Google Play 开发者控制台查找 sha-1 指纹。然后将此 sha-1 添加到 Firebase 控制台。 Google Play 开发者控制台会生成 SHA1 密钥吗?我在想只有开发系统会生成一个 sha1。我做对了吗? 其实我也不知道。但我今天将向您展示如何从 Google play 获取 Firebase 的 sha-1。我现在可以移动了。 终于找到了解决方案。检查这个答案:***.com/a/45273726/3170065 【参考方案1】:

我也被困在我的项目发布的同一点,即使添加了调试和发布的 SHA1 密钥,我也无法理解是什么导致了问题。对我来说还不止这些。在我开始签署我的构建之前它工作正常,后来我意识到我的调试构建开始失败并出现同样的错误。这意味着,我有一个可行的解决方案,我想用发布密钥签名但没有奏效,我正在使用 proguard 规则使其工作并最终添加 SHA1 发布密钥。在让它工作的整个兴奋中,在某些时候,我失去了我原来的功能,即我的调试版本也开始失败,出现同样的问题,即使我没有删除我的调试密钥。这让我从头开始着手处理,那时我意识到整个过程可以简单得多。

解决方法答案

按照谷歌文档链接here,我创建了一个新活动并提出了以下代码,它与调试和释放密钥一起工作,就像一个魅力。

List<AuthUI.IdpConfig> providers = Arrays.asList(
            new AuthUI.IdpConfig.Builder(AuthUI.GOOGLE_PROVIDER).build(),
            new AuthUI.IdpConfig.Builder(AuthUI.FACEBOOK_PROVIDER).build()
        );
            // Create and launch sign-in intent
           startActivityForResult(
               AuthUI.getInstance()
               .createSignInIntentBuilder()
               .setAvailableProviders(providers)
               .setTheme(R.style.LoginTheme)
               .build(),
               RC_SIGN_IN);

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

            if (requestCode == RC_SIGN_IN) 
                IdpResponse response = IdpResponse.fromResultIntent(data);
                if (resultCode == RESULT_OK) 
                    // Successfully signed in
                    showProgressDialog();
                    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
                    if (user != null) 
                        user.getIdToken(true).addOnCompleteListener(new OnCompleteListener<GetTokenResult>() 
                        @Override
                       public void onComplete(@NonNull Task<GetTokenResult> task) 
                                if (task.isSuccessful()) 
                                    String idToken = task.getResult().getToken();
                                    getCustomJWToken(idToken);
                                
                            
                        );
                     else 
                        Toast.makeText(FirebaseLogin.this, 
                        R.string.firebase_auth_error, Toast.LENGTH_SHORT).show();
                    
                    hideProgressDialog();
                 else 
                    Toast.makeText(FirebaseLogin.this, R.string.invalid_credentials, 
                     Toast.LENGTH_SHORT).show();
                
            
        

希望这对那里的人有所帮助。

【讨论】:

以上是关于Firebase Google 登录开发人员错误的主要内容,如果未能解决你的问题,请参考以下文章

将 android studio 项目与 Firebase 集成以实现 google 登录功能时出现依赖错误

Flutter Firebase Android/ios Google 登录错误

由于 12500(SIGN_IN_FAILED) 错误代码,使用 Google 登录 Firebase UI 失败

错误:Firebase Auth Google 删除 EmailPassword Auth

开发人员错误验证 Gmail 登录 Android - 异常 10

使用firebase和flutter登录google后获取用户详细信息