首页 > 解决方案 > 如何区分 Firebase 身份验证中的 signIn 和 linkWith?

问题描述

onActivityResult我尝试获取凭据并使用 Google 执行 Firebase 登录时:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if (requestCode == RC_SIGN_IN) {
        val task = getSignedInAccountFromIntent(data)
        try {
            val googleSignInAccount = task.getResult(ApiException::class.java)
            if (googleSignInAccount != null) {
                val googleTokenId = googleSignInAccount.idToken
                val credential = getCredential(googleTokenId, null)
                firebaseSignInWithGoogle(credential)
            }
        } catch (e: ApiException) {
            //Log Exception
        }
    }
}

如您所见,我创建了一个 firebaseSignInWithGoogle() 函数,调用该函数对用户进行身份验证。这工作正常。我还创建了一个 linkAccountWithGoogle() 函数。当我按下按钮链接帐户时,会调用相同的 onActivityResult。我可以获得凭证,但如何区分调用哪个方法?firebaseSignInWithGoogle() 或 linkAccountWithGoogle()?我很难解决这个问题,因为我看不到任何关系。

标签: androidfirebasekotlinfirebase-authentication

解决方案


当同一个电子邮件地址已经有一个帐户时,您通常需要关联帐户。

所以:

  1. fetchSignInMethodsForEmail使用 Google 帐户中的电子邮件地址拨打电话
  2. 如果该电子邮件地址已有帐户,请将 Google 帐户与该帐户相关联。
  3. 如果该电子邮件地址还没有帐户,请创建一个新帐户。

推荐阅读