我已经在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令牌的原因。