在Firebase上注册Facebook登录但身份验证不起作用

时间:2018-06-25 17:31:54

标签: android firebase xamarin.android firebase-authentication facebook-authentication

我已经在xamarin Android应用中实现了Facebook身份验证,并且一切正常。我从Facebook获得令牌,并使用firebase rest Api的登录方法,我能够转到Firebase并从firebase api接收作为JWT的访问令牌。 但是,当我想在我的Web Api Core上使用此访问令牌时,该Web api Core使用以下基于此article的代码来实现Firebase身份验证,它始终返回未身份验证。 遵循完全相同的步骤,相同的代码可用于Google身份验证。它也适用于电子邮件和密码验证。 Facebook可能是什么问题?

我去https://console.firebase.google.com/u/0/project/myfirebase/authentication/users时认识到的差异

我可以看到google用户,电子邮件用户,但看不到facebook用户。这意味着什么?如果未注册,为什么我要从firebase获取JWT令牌。

另一个是Google有一个有效期,而facebook令牌没有。

services
    .AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(options =>
    {
        options.Authority = "https://securetoken.google.com/my-firebase-project";
        options.TokenValidationParameters = new TokenValidationParameters
        {
            ValidateIssuer = true,
            ValidIssuer = "https://securetoken.google.com/my-firebase-project",
            ValidateAudience = true,
            ValidAudience = "my-firebase-project",
            ValidateLifetime = true
        };
    });

编辑:我使用另一个Facebook帐户进行了测试,并且它实际上正在运行。问题似乎是fb帐户不起作用已连接到已经使用Google登录注册的gmail帐户。因此,如果已使用其他Oauth2方法注册了连接的电子邮件,则Firebase不会为Facebook创建另一个帐户。 但是我不明白为什么我不能从Firebase进行身份验证并获得JWT令牌的原因。

1 个答案:

答案 0 :(得分:1)

直到firebase发布此问题的官方解决方案,解决方法是在

下的登录方法中为每个电子邮件地址启用多个帐户。

enter image description here