android - 如何区分 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()?我很难解决这个问题,因为我看不到任何关系。
解决方案
当同一个电子邮件地址已经有一个帐户时,您通常需要关联帐户。
所以:
fetchSignInMethodsForEmail
使用 Google 帐户中的电子邮件地址拨打电话- 如果该电子邮件地址已有帐户,请将 Google 帐户与该帐户相关联。
- 如果该电子邮件地址还没有帐户,请创建一个新帐户。
推荐阅读
- ubuntu - GitLab Runner:在没有外壳的情况下切换用户后在服务器上执行代码
- google-bigquery - BigQuery - ST_MAKEPOLYGON() 因多边形循环无效而失败
- python - 我想使用 Python 3 post of requests 来实现登录但总是 404
- rest - 使用 GET 在 REST API 中向服务器发送信息
- node.js - 如何调用在同一 EC2 实例上但在不同端口号上运行的 API
- c# - 自适应卡片:在自适应卡片的下拉菜单中单击动态显示卡片:Bot Builder
- angular - 如何在 agm-directions 的起点和终点标记上附加 Click 事件?
- composer-php - 自动加载不会找到以前的包
- php - 如何在 Cron 作业中设置基于 Codeigniter 的 url?
- javascript - 如何根据内部 div 高度获取内部 html?