asp.net mvc API外部登录

asp.net mvc API外部登录,asp.net,asp.net-mvc,facebook,Asp.net,Asp.net Mvc,Facebook,我使用asp.net mvc api和用户创建了一个应用程序,如下所示。 每件事都是这样运作的 现在我正在尝试添加外部登录(实际上只是Facebook)。 我一直在寻找如何做到这一点,我找到了答案 因此,我用Facebook AppId/Secret配置了Startup.Auth.cs 我调用GET api/Account/ExternalLogins?returnUrl=%2F&generateState=true 然后我重定向到给定的Url。然后我又回到了类似http://localhost

我使用asp.net mvc api和用户创建了一个应用程序,如下所示。 每件事都是这样运作的

现在我正在尝试添加外部登录(实际上只是Facebook)。 我一直在寻找如何做到这一点,我找到了答案

因此,我用Facebook AppId/Secret配置了
Startup.Auth.cs

我调用
GET api/Account/ExternalLogins?returnUrl=%2F&generateState=true

然后我重定向到给定的Url。然后我又回到了类似
http://localhost:49728/#access_token= ... &令牌类型=承载和到期时间=2592000和状态=…

这是我的问题。在网站上注册用户的下一步应该做什么

web应用程序完成后,将出现一个移动本机应用程序

编辑
我更改了返回url,在那里我可以询问并保存用户名。 到目前为止还不错

保存新用户后,我需要进行登录,因此我尝试以下操作:

var state = new RegExp('[\&&]state=([^&#]*)').exec(window.location.href);
                $.get(baseurl + 'api/Account/ExternalLogin?provider=Facebook&response_type=token&client_id=self&redirect_uri=' + encodeURIComponent(baseurl) + '&state=' + state[1], function (data, status) {
                    console.log(data);
                });
但我收到了400个错误请求。

我现在的问题是如何解决这个问题并进行登录?

您需要使用生成的访问令牌并使用它调用RegisterExternal web调用,方法是将其添加到授权标头(使用postman进行测试),如下所示:

授权承载访问令牌

在“注册外部网络呼叫”中,我想您需要提供一封电子邮件,以便将其与facebook登录相关联

然后,您需要像第一次一样再次执行外部登录调用(链接来自get external logins)

这一次,返回的访问令牌将是本地访问令牌,而不是facebook外部访问令牌,您可以使用此令牌调用asp.net api,方法是将其作为“授权”添加到http请求头中,方法与我解释的相同

编辑: 对于您面临的错误请求,请尝试以下操作: 转到ApplicationAuthProvider类,然后转到ValidateClientRedirectUri方法,将该方法代码更改为:

 if (context.ClientId == _publicClientId)
 {
    Uri expectedRootUri = new Uri(context.Request.Uri, "/");

    if (context.RedirectUri.StartsWith(expectedRootUri.AbsoluteUri))
    {
       context.Validated();
    }
 }

 return Task.FromResult<object>(null);
if(context.ClientId==\u publicClientId)
{
Uri expectedRootUri=新Uri(context.Request.Uri,“/”;
if(context.RedirectUri.StartsWith(expectedRootUri.AbsoluteUri))
{
context.Validated();
}
}
返回Task.FromResult(空);

是的,差不多完成了,现在问题是当我尝试再次调用外部登录时,
GET/api/Account/ExternalLogin?provider=Facebook&response\u type=token&client\u id=self&redirect\u uri=http%3A%2F%2folocalhost%3A15359%2F&state=qotufgxrptkafjvchiotowbngzydgvkzwsx8yrqepedk1
我收到400个错误请求。怎么了?我不确定您的情况下出现了什么问题,我需要更多的代码和错误日志,如果您尝试使用postman,并查看错误或调试以查看错误,这将更加有益。不过,我想让你尝试一下,让我知道它是否有效。我将编辑我的答案以添加该更改。它现在起作用了,忘记设置令牌了