文档说
例如,' facebook.com'或' google.com'。
然而,在某处可以找到详尽的清单,我可以依赖它吗?这些内容是否可以成为一种变体,例如' facebook'或者' google' (没有.com)?
上下文:我试图弄清楚签名用户是否具有社交登录。所以我想循环遍历currentUser.providerData
并将其与已知的providerIds列表进行匹配。
答案 0 :(得分:13)
在Firebase控制台上的任何项目的“身份验证”中的“登录方法”子选项卡中,您可以看到可用登录提供商的列表:
从它的外观来看,目前有7家提供商。 Firebase的文档似乎甚至不是跨越不同的平台,但对于iOS Reference docs,有一个FirebaseAuth常量列表,与项目控制台仪表板中的7个匹配,匿名提供者除外:
从头开始创建一个新的iOS项目并将此代码添加到didFinishLaunchingWithOptions
方法:
FirebaseApp.configure()
print("EmailAuthProviderID: " + EmailAuthProviderID)
print("PhoneAuthProviderID: " + PhoneAuthProviderID)
print("GoogleAuthProviderID: " + GoogleAuthProviderID)
print("FacebookAuthProviderID: " + FacebookAuthProviderID)
print("TwitterAuthProviderID: " + TwitterAuthProviderID)
print("GitHubAuthProviderID: " + GitHubAuthProviderID)
我得到的输出是:
EmailAuthProviderID: password
PhoneAuthProviderID: phone
GoogleAuthProviderID: google.com
FacebookAuthProviderID: facebook.com
TwitterAuthProviderID: twitter.com
GitHubAuthProviderID: github.com
答案 1 :(得分:1)
import com.google.firebase.auth.*
val user = FirebaseAuth.getInstance().currentUser
user?.let {
for (profile in it.providerData) {
when(profile.providerId){
GoogleAuthProvider.PROVIDER_ID -> {
}
EmailAuthProvider.PROVIDER_ID -> {
}
PhoneAuthProvider.PROVIDER_ID -> {
}
FacebookAuthProvider.PROVIDER_ID -> {
}
TwitterAuthProvider.PROVIDER_ID -> {
}
GithubAuthProvider.PROVIDER_ID -> {
}
}
}
}
以下是Firebase SDK提供程序类。
答案 2 :(得分:0)
您可以使用此方法来标识提供者的类型:
private String checkType(String s) {
String type;
switch (s) {
case "password":
type = "EmailAuthProviderID";
break;
case "phone":
type = "PhoneAuthProviderID";
break;
case "google.com":
type = "GoogleAuthProviderID";
break;
case "facebook.com":
type = "FacebookAuthProviderID";
break;
case "twitter.com":
type = "TwitterAuthProviderID";
break;
case "github.com":
type = "GitHubAuthProviderID";
break;
}
}
答案 3 :(得分:0)
js SDK上缺少奇怪的MicrosoftAuthProvider(但有效),并且在统一SDK上可用
答案 4 :(得分:0)