我正在使用Firebase和FirebaseUI制作Android应用。该应用程序允许使用电子邮件和密码,谷歌和Facebook登录。如何找到用户使用了哪些登录方法?
在此处描述流程:
例如
//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
}
答案 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 }}