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