firebase.UserInfo.providerId的提供者ID的完整列表是什么?

时间:2017-10-24 02:12:46

标签: firebase firebase-authentication

文档说

  

例如,' facebook.com'或' google.com'。

然而,在某处可以找到详尽的清单,我可以依赖它吗?这些内容是否可以成为一种变体,例如' facebook'或者' google' (没有.com)?

上下文:我试图弄清楚签名用户是否具有社交登录。所以我想循环遍历currentUser.providerData并将其与已知的providerIds列表进行匹配。

5 个答案:

答案 0 :(得分:13)

在Firebase控制台上的任何项目的“身份验证”中的“登录方法”子选项卡中,您可以看到可用登录提供商的列表:

enter image description here

从它的外观来看,目前有7家提供商。 Firebase的文档似乎甚至不是跨越不同的平台,但对于iOS Reference docs,有一个FirebaseAuth常量列表,与项目控制台仪表板中的7个匹配,匿名提供者除外:

  1. EmailAuthProviderID
  2. PhoneAuthProviderID
  3. GoogleAuthProviderID
  4. FacebookAuthProviderID
  5. TwitterAuthProviderID
  6. GitHubAuthProviderID
  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)

最简单的方法是检查“规则”选项卡中的提供者列表: Auth providers list