检查用户当前会话使用的身份验证方法

时间:2017-11-19 03:03:06

标签: android firebase firebase-authentication

我正在使用Firebase和FirebaseUI制作Android应用。该应用程序允许使用电子邮件和密码,谷歌和Facebook登录。如何找到用户使用了哪些登录方法?

在此处描述流程:

  1. 用户看到登录屏幕(FirebaseUI)
  2. 用户使用首选登录方式并登录
  3. 根据用户使用的登录方法显示下一个布局
  4. 例如

    //this activity is launched after successful sign in
    public class MainActivity extends AppCompatActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if(/*signed in with email-password*/)
        setContentView(R.layout.activity_main_email);
        else if(/*signed in with google*/)
        setContentView(R.layout.activity_main_google);
        else //signed in with facebook
        setContentView(R.layout.activity_main_facebook);
        //do something
    }
    

2 个答案:

答案 0 :(得分:1)

根据this Frank van Puffelen发布说,这可以通过检查当前用户的提供者数据来实现。

根据他的解决方案,这样做:

    public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

   //detect provider id like that

    for(UserInfo user: FirebaseAuth.getInstance().getCurrentUser().getProviderData()){

   if(user.getProviderId().equals("facebook.com")){
     //logged with Facebook

    }

    if(user.getProviderId().equals("google.com")){
     //logged with google

    }


  }

答案 1 :(得分:0)

虽然您可以从FirebaseAuth.getInstance().getCurrentUser().getProviderData()获取提供商列表,但用户可以链接多个提供商。因此,即使使用其他链接提供商登录,选择第一个提供商也总是会产生相同的提供商。确定用于登录的当前提供商的最准确方法是检查ID令牌字段:{{1 }}

相关问题