Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.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
在Web API Facebook登录中返回401_Facebook_Login_Asp.net Web Api_Asp.net Web Api2_Owin - Fatal编程技术网

在Web API Facebook登录中返回401

在Web API Facebook登录中返回401,facebook,login,asp.net-web-api,asp.net-web-api2,owin,Facebook,Login,Asp.net Web Api,Asp.net Web Api2,Owin,在社区中,我遵循了一个例子,说明了如何在我的web api上提供Facebook登录服务,但我无法让它工作。 . 我确实试过了,但仍然不起作用 嗯,在我的AccountController中,我有GetExternalLogin方法,行中: if (!User.Identity.IsAuthenticated) { return new ChallengeResult(provider, this); } 该方法返回错误401。我以前不使用

在社区中,我遵循了一个例子,说明了如何在我的web api上提供Facebook登录服务,但我无法让它工作。 . 我确实试过了,但仍然不起作用

嗯,在我的AccountController中,我有GetExternalLogin方法,行中:

if (!User.Identity.IsAuthenticated)
        {
           return new ChallengeResult(provider, this);
        }
该方法返回错误401。我以前不使用OWIN,但我希望在方法中调用Facebook登录API。这不需要调用Facebook登录页面,只需返回401即可

我复制了所有的示例代码,但没有工作。我该怎么办

ChallengeResult中的代码:

 public class ChallengeResult : IHttpActionResult
{
    public string LoginProvider { get; set; }
    public HttpRequestMessage Request { get; set; }

    public ChallengeResult(string loginProvider, ApiController controller)
    {
        LoginProvider = loginProvider;
        Request = controller.Request;
    }

    public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
    {
        Request.GetOwinContext().Authentication.Challenge(LoginProvider);

        HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.Unauthorized);
        response.RequestMessage = Request;
        return Task.FromResult(response);
    }
}
public类ChallengeResult:IHttpActionResult
{
公共字符串登录提供程序{get;set;}
公共HttpRequestMessage请求{get;set;}
public ChallengeResult(字符串登录提供程序、ApiController控制器)
{
LoginProvider=LoginProvider;
请求=控制器。请求;
}
公共任务执行同步(CancellationToken CancellationToken)
{
Request.GetOwinContext().Authentication.Challenge(LoginProvider);
HttpResponseMessage response=新的HttpResponseMessage(HttpStatusCode.Unauthorized);
response.RequestMessage=请求;
返回Task.FromResult(响应);
}
}
对不起,我对奥文一无所知。我将了解返回401(未经授权)是正确的。这是外部登录提供商(在您的例子中是Facebook)用来知道必须显示登录页面的内容

如我所见,您已经在学习教程,但可能可以帮助您了解外部提供者的身份验证和授权过程。本教程介绍了如何使用Google和Facebook进行授权,但在您的情况下,您可以跳过Google部分


我希望这有帮助

碰到同样的问题,烧掉同样的神经元。在失去足够的大脑质量后,我在我的案例中找到了原因:在查询字符串中,我用一个小f写了Facebook。当我把它改成大写字母F时,它开始工作了


希望这有帮助。

嗨!所以,我尝试了你发给我的教程,在我尝试之前,我现在正在编写的教程,但这也不起作用。返回的应该是登录facebook的链接,而不仅仅是401错误,不是吗?如果是我在问题中引用的这段话,然后死在那里,我该如何编码重定向到facebook?嗨!我也遇到过同样的行为,但只有在facebook上,twitter运行良好,你解决了吗?