我已经在我的xamarin android应用程序中实现了facebook身份验证,一切正常。我从facebook获取令牌,并使用firebase rest api的signin方法,我能够登录firebase并从firebase api接收作为jwt的访问令牌。
但是,当我想在我的web api核心上使用这个访问令牌时,它总是返回not authenticated,这个核心使用下面的代码实现firebase身份验证。
相同的代码在google身份验证中的工作步骤完全相同。它也适用于电子邮件+密码验证。
Facebook有什么问题?
当我转到article
我可以看到谷歌用户,电子邮件用户,但不是Facebook用户。那是什么意思?如果没有注册,为什么要从firebase获得jwt令牌。
另一个是谷歌有一个有效期,但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帐户不工作是连接到Gmail帐户已经注册使用谷歌登录。因此,如果连接到的电子邮件已使用其他OAuth2方法注册,则FireBase不会为Facebook创建其他帐户。
但我不明白为什么它不允许我授权,如果我可以认证并从firebase获得jwt令牌。
最佳答案