firebase自定义身份验证系统:登录后没有自定义令牌身份验证的提供者ID

时间:2017-09-18 12:40:23

标签: android firebase firebase-authentication

我正在使用firebase自定义身份验证令牌系统将LinkedIn添加为身份验证提供程序。我设置了Google功能,通过http触发器从Android接收LinkedIn访问令牌,然后查询LinkedIn Api以获取用户的详细信息并使用uid "linkedin:$linkedin-user-id"

在firebase中创建用户

但现在问题是firebase没有像FirebaseUser.getproviders()那样为自定义身份验证提供任何提供者ID。我需要此信息,因为我的应用程序还支持EmailAuth,GoogleAuth和FacebookAuth。基于提供程序,我需要执行提供程序特定的功能。

检查供应商列表是否为空只有在LinkedIn与用户关联时才有效,如果用户有多个帐户,则此检查将失败。

这种情况有什么解决方案吗? Firebase可能有自己的理由不包括自定义的提供者ID,但我需要一些如何识别用于登录的linkedin提供者

1 个答案:

答案 0 :(得分:1)

您可以使用if-elseif-else语句,如下所示:

if (firebaseUser != null) {
    for (UserInfo userInfo : firebaseUser.getProviderData()) {
        if (userInfo.getProviderId().equals("facebook.com")) {
            Toast.makeText(MainActivity.this, "User is signed in with Facebook", Toast.LENGTH_SHORT).show();
        } else if (userInfo.getProviderId().equals("google.com")) {
            Toast.makeText(MainActivity.this, "You are signed in Google!", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(MainActivity.this, "You are signed in LinkedIn!", Toast.LENGTH_SHORT).show();        
        }
    }
}