【问题标题】:Check which authentication method was used by user for current session检查用户当前会话使用的身份验证方法
【发布时间】:2017-11-19 03:03:05
【问题描述】:

我正在使用 Firebase 和 FirebaseUI 制作一个 android 应用程序。该应用程序允许使用电子邮件和密码、google 和 facebook 登录。如何找到用户使用了哪些登录方法?

在这里描述流程:

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

例如

//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
}

【问题讨论】:

    标签: android firebase firebase-authentication


    【解决方案1】:

    thisFrank 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
    
        }
    
    
      }
    

    【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 对,为我工作:String choosenProvider = FirebaseAuth.getInstance().getAccessToken(false).getResult().getSignInProvider(); if (choosenProvider.equals('password')){ ... do something }
    猜你喜欢
    • 2017-07-09
    • 1970-01-01
    • 1970-01-01
    • 2020-10-06
    • 1970-01-01
    • 2022-12-12
    • 2014-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多