Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET标识:手动解码Facebook令牌_C#_Facebook_Asp.net Mvc 5_Identity_Asp.net Identity 2 - Fatal编程技术网

C# ASP.NET标识:手动解码Facebook令牌

C# ASP.NET标识:手动解码Facebook令牌,c#,facebook,asp.net-mvc-5,identity,asp.net-identity-2,C#,Facebook,Asp.net Mvc 5,Identity,Asp.net Identity 2,我正在将网站从使用第三方身份提供商转换为使用ASP.NET identity 2站点当前不使用任何OWIN中间件,只是将用户提供的凭据传递给身份提供商。然后,如果凭据正确,我们将创建一个会话令牌,并在后续请求中使用会话令牌来重建用户的会话 我的目标是在代码更改最少的情况下避免使用第三方提供程序,因此我的想法是使用ASP.NET Identity中的UserManager类作为第三方提供程序的替代品。换句话说,我们不会使用任何Startup.Auth.csmagic来配置自动质询响应或cookie

我正在将网站从使用第三方身份提供商转换为使用ASP.NET identity 2站点当前不使用任何OWIN中间件,只是将用户提供的凭据传递给身份提供商。然后,如果凭据正确,我们将创建一个会话令牌,并在后续请求中使用会话令牌来重建用户的会话

我的目标是在代码更改最少的情况下避免使用第三方提供程序,因此我的想法是使用ASP.NET Identity中的
UserManager
类作为第三方提供程序的替代品。换句话说,我们不会使用任何
Startup.Auth.cs
magic来配置自动质询响应或cookie设置/验证中间件。我们只需获取用户提供的凭据,使用
UserManager.FindAsync
测试它们,然后继续使用现有流

我的问题是如何处理Facebook登录。目前,我们显示了一个登录对话框,成功登录后,会向我们发送一个Facebook令牌。然后我们将此令牌发送给第三方提供商,由其验证并神奇地将其转换为电子邮件地址、名字和姓氏。我自己也不知道该怎么做

我看到,如果我使用ASP.NET Identity的开箱即用示例应用程序,它将通过OWIN中间件执行相同的操作我看不到有任何方法可以让我获取令牌并使用ASP.NET Identity中的某些类手动将令牌转换为可用数据。

(注意:我确实看到我可以使用Facebook Graph API以及我的应用ID、应用机密和用户令牌来恢复用户的姓名,但我没有获得电子邮件地址,因此这种方法与OWIN中间件所做的一定不同。)

因此,我的问题是:

  • 如何手动验证和解码Facebook令牌,方法与ASP.NET Identity OWIN中间件相同
  • 这真是个愚蠢的想法吗

提前感谢您的帮助。

“然后我们将此令牌发送给第三方提供商,由其验证并神奇地将其转换为电子邮件地址、名字和姓氏。我自己不知道如何执行此操作。”-它被称为发出API请求,这基本上就是这些令牌最初的用途。CBroe,谢谢。我的理解是,令牌本身包含一些数据和签名。也许我把它和别的东西混在一起了。那么你是说你认为身份提供者只是在调用Facebook的Graph API来检索这些细节?是的。我不知道令牌本身是否包含任何信息;我宁愿怀疑它是完全随机的,并且与用户id和过期时间一起存储在某个地方以供查找。但要获取用户详细信息,您需要使用令牌并发出API请求来读取这些字段。明白了。在这种情况下,这似乎很简单。谢谢