Oauth 2.0 Facebook OAuth登录未在ASP.NET Core 2.2中获取用户配置文件

Oauth 2.0 Facebook OAuth登录未在ASP.NET Core 2.2中获取用户配置文件,oauth-2.0,asp.net-core-mvc,Oauth 2.0,Asp.net Core Mvc,我再次与ASP.NET Core 2.2的标识部分发生冲突。这次是它的Facebook登录。谷歌和微软做了一些小小的调整,但Facebook让我难堪 这是我的配置 "Facebook": { "ClientId": "See secrets.json", "ClientSecret": "See secrets.json", "AuthorizationEndpoint": "https://www.face

我再次与ASP.NET Core 2.2的标识部分发生冲突。这次是它的Facebook登录。谷歌和微软做了一些小小的调整,但Facebook让我难堪

这是我的配置

        "Facebook": {
            "ClientId": "See secrets.json",
            "ClientSecret": "See secrets.json",
            "AuthorizationEndpoint": "https://www.facebook.com/v5.0/dialog/oauth",
            "TokenEndpoint": "https://graph.facebook.com/oauth/access_token",
            "UserInformationEndpoint": "https://graph.facebook.com/me?fields=id,name,first_name,email",
            "CallbackPath": "/oauth2/facebook",
            "Scope": [ "public_profile", "email" ]
        }
使用Fiddler,我看不到有人试图调用
/me
资源来获取配置文件。我可以看到返回通道调用以获取访问令牌,我看到响应在我看来像是好的JSON,令牌工作正常;我可以手动调用Facebook Graph API并获取我的个人资料

我让Fiddler跟踪一个正在工作的Google登录,我看到一个令牌返回,它似乎与Facebook使用的JSON模式相同,然后在backchannel上另一个清晰的请求/响应来获取我的Google配置文件

Facebook返回
{“访问令牌”、“令牌类型”、“过期”}
while 谷歌返回
{“访问令牌”、“过期令牌”、“范围”、“令牌类型”、“id令牌”}

遗憾的是,由于我使用的是Microsoft框架,这次没有使用自己的OAuth代码,所以我无法看到内部发生了什么,我认为Microsoft选择不记录任何内容,因为担心将机密泄露到日志中

我没有主意了


在建立LinkedIn后,同样的问题。Token返回时看起来很好,但它甚至没有尝试打电话获取个人资料


身份框架是一个多么昂贵的噩梦。

我让Facebook登录正常工作。我在研究为什么微软和谷歌会这样做,看到他们使用自己的扩展方法,比如
AddGoogle
,而不是香草
AddOAuth

查看GitHub上的代码可以发现,每个命名的代码都使用一个自定义处理程序

这告诉我,每个OAuth提供程序都无法遵循标准,因此每个提供程序都需要自定义代码!大家干得好。高分

我将尝试使用LinkedIn的Google(etc)处理程序,看看是否有“兼容”的处理程序