简体   繁体   English

Firebase 使用 email 和 google 进行身份验证

[英]Firebase Authentication using email and google

I'm using firebase in Android Studio with kotlin.我在 Android Studio 中使用 firebase 和 kotlin。

I want to know whether login account is email-register account or google social account.我想知道登录帐户是电子邮件注册帐户还是谷歌社交帐户。

As I know, if FirebaseAuth.getInstance().currentUser.providerId is "google.com", user used google social login.据我所知,如果 FirebaseAuth.getInstance().currentUser.providerId 是“google.com”,则用户使用了 google 社交登录。

And if providerId is "password", user used email register with firebase.如果 providerId 是“密码”,则用户使用 email 注册 firebase。

But only I can get "firebase" from providerId.但只有我可以从 providerId 获取“firebase”。

How can I solve it?我该如何解决?

It it is neccessary for making login function.需要登录function。

I can get only "firebase" from providerId.我只能从 providerId 获得“firebase”。

According to the API documentation , getProviderId() (or just providerId for Kotlin) will always return FirebaseAuthProvider#PROVIDER_ID (which is equal to "firebase" ).根据API 文档getProviderId() (或 Kotlin 的providerId )将始终返回FirebaseAuthProvider#PROVIDER_ID (等于"firebase" )。

If you want to determine which authentication channel was used to get this Firebase ID Token, you need to use getProviderData() which contains the UserInfo objects returned from the social logins.如果要确定使用哪个身份验证通道来获取此 Firebase ID 令牌,则需要使用getProviderData() ,其中包含从社交登录返回的UserInfo对象。

val auth = FirebaseAuth.getInstance();
val hasLinkedGoogleUser = auth.providerData.any{ it.providerId == GoogleAuthProvider.PROVIDER_ID }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM