Asp.net mvc 4 使用WebApi的ASP.NET标识&;外部登录

Asp.net mvc 4 使用WebApi的ASP.NET标识&;外部登录,asp.net-mvc-4,asp.net-web-api,asp.net-identity,Asp.net Mvc 4,Asp.net Web Api,Asp.net Identity,我又一次被卡住了!我正在尝试使用个人帐户实现具有ASP.NET标识的安全WebApi服务。WebApi服务将由使用phonegap开发的移动应用程序使用。我的phonegap应用程序使用facebook和twitter进行登录,我已经在客户端完美地实现了这一点 我已经从VisualStudio模板创建了一个SPA项目,并使用fiddler和chrome开发工具测试了监视HTTP请求的登录过程。我尝试了以下使用邮递员的请求 获取:http://localhost:49577/api/Account

我又一次被卡住了!我正在尝试使用个人帐户实现具有ASP.NET标识的安全WebApi服务。WebApi服务将由使用phonegap开发的移动应用程序使用。我的phonegap应用程序使用facebook和twitter进行登录,我已经在客户端完美地实现了这一点

我已经从VisualStudio模板创建了一个SPA项目,并使用fiddler和chrome开发工具测试了监视HTTP请求的登录过程。我尝试了以下使用邮递员的请求

获取:
http://localhost:49577/api/Account/ExternalLogins?returnUrl=/&generateState=true

答复:

[{
        "Name": "Facebook",
        "Url": "/api/Account/ExternalLogin?provider=Facebook&response_type=token&client_id=self&redirect_uri=http%3A%2F%2Flocalhost%3A49577%2F&state=jpePf27F3ufkCCEldFdoOVMEGBGTEO1CrRdUQ3bHEP01",
        "State": "jpePf27F3ufkCCEldFdoOVHSGBGTEO1CrRdUQ3bHEP01"
}]
然后我打电话 获取:
http://localhost:49577/api/Account/ExternalLogin?provider=Facebook&response_type=token&client_id=self&redirect_uri=http%3A%2F%2Flocalhost%3A49577%2F&state=jpePf27F3ufkCCEldFdoOVMEGBGTEO1CrRdUQ3bHEP01
调用AccountsController的GetExternalLogin方法。然后,当用户未经身份验证时,返回ChallengeResult的实例

这就是我被困的地方。 Q1:ChallengeResult使用一些querystring参数强制301重定向到facebook登录页面。我不想这样,我想让它给我参数,但让我在ajax请求中处理日志记录。我试过注释这行代码

Request.GetOwinContext().Authentication.Challenge(LoginProvider);
但我最终得到的是一份401,没有其他任何东西,我怎样才能控制ChallegeResult的反应呢

问题2。此外,我也不太清楚接下来会发生什么,在我从facebook获得访问令牌之后,我应该调用什么webapi端点。例如,如果我已经获得了访问令牌,我应该传递什么给它

我在谷歌上搜索了一整天,但我找不到任何能回答我问题的东西。任何帮助都将不胜感激。 谢谢

更新:

关于第二季度;我已经想出了下一步,那就是 获取:
http://localhost:49164/signin-facebook?代码=…&状态=…

这将返回另一个302,该302重定向到

http://localhost:49164/api/Account/ExternalLogin?provider=Facebook&response_type=token&client_id=self&redirect_uri=http%3A%2F%2Flocalhost%3A49164%2F&state=7oGPd37EA-nmtXPtYEQ40qnretDeKjbPEM1gNkb2DuM1
http://localhost:49164/#access_token=...
然后返回另一个302,然后重定向到

http://localhost:49164/api/Account/ExternalLogin?provider=Facebook&response_type=token&client_id=self&redirect_uri=http%3A%2F%2Flocalhost%3A49164%2F&state=7oGPd37EA-nmtXPtYEQ40qnretDeKjbPEM1gNkb2DuM1
http://localhost:49164/#access_token=...
那么,如何处理来自移动非浏览器客户端的所有重定向

更新

我正在尝试查找处理的控制器操作
http://localhost:49164/signin-facebook?代码=…&状态=…
有人能帮忙吗

更新 自从发布这个问题以来,我已经了解了很多关于facebool登录流的知识,这可能是我以前应该做的!
我仍然有一个问题,但我创造了一个问题来减少混乱

这个问题的答案非常详细。为了让它更简单,我将向您介绍一个示例,该示例向您展示如何使用SPA应用程序连接不同的客户端(电话、平板电脑等),以及如何使用Facebook等社交登录登录

我也在为这个问题挣扎。。。我有一个angularJs应用程序,我尝试在没有WebApi的情况下进行FB登录,只使用FB JS SDK。但同样,我被困在哪里传递从Facebook收到的认证数据。以下是我的问题供参考: