我正在使用第三方身份提供商将网站转换为使用ASP.NET Identity 2。 该网站目前不使用任何OWIN中间件,只是将用户提供的凭据传递给身份提供商。然后,如果凭据正确,我们将创建会话令牌,并在后续请求中使用会话令牌来重建用户的会话。
我的目标是尽量少用代码更改来使用第三方提供程序,所以我的想法是使用ASP.NET身份中的UserManager
类作为第三方的替代品 - 提供者。换句话说,我们不会使用任何Startup.Auth.cs
魔法来配置自动质询 - 响应或cookie设置/验证中间件。我们只需获取用户提供的凭据,使用UserManager.FindAsync
对其进行测试,然后继续使用现有流程。
我的问题在于处理Facebook登录。目前,我们会显示一个登录对话框,成功登录后会向我们发送Facebook令牌。然后,我们将此令牌发送给第三方提供商,第三方提供商对其进行验证并将其神奇地转换为电子邮件地址,名字和姓氏。我自己无法弄清楚如何做到这一点。
我看到如果我使用开箱即用的ASP.NET身份示例应用程序,它将通过OWIN中间件执行相同的操作。 我没有看到任何方式让我获取令牌并使用ASP.NET Identity中的某些类来自动将令牌转换为可用数据。
(注意:我确实看到我可以使用Facebook Graph API以及我的应用ID,应用密码和用户令牌来恢复用户名,但我没有收到电子邮件地址,所以关于这种方法必须与OWIN中间件正在做的不同。)
因此,我的问题是:
提前感谢您的帮助。