gpt4 book ai didi

asp.net-mvc - 使用外部不记名 token (MVC4 Web Api) 登录 Facebook

转载 作者:行者123 更新时间:2023-12-04 12:54:21 24 4
gpt4 key购买 nike

我正在尝试使用外部不记名 token 实现 facebook 登录。我在 VS 2013 中创建了新项目并选择了个人用户帐户身份验证,如本教程 http://www.asp.net/web-api/overview/security/external-authentication-services .

我配置了 facebook 身份验证:

app.UseFacebookAuthentication(
appId: "123[...]",
appSecret: "123[...]");

并且一切正常。

我的测试方法:
[OverrideAuthentication]
[HostAuthentication(DefaultAuthenticationTypes.ExternalBearer)]
[Route("ExternalLogin2", Name = "ExternalLogin2")]
public async Task<IHttpActionResult> GetExternalLogin2()
{
ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity);
return Ok();
}

我不明白 [HostAuthentication(DefaultAuthenticationTypes.ExternalBearer)] 是如何工作的。

我在 fiddler 中调用 GET 请求:
GET http://localhost:17353/api/Account/ExternalLogin2 HTTP/1.1
Authorization: Bearer [my facebook token]
Content-Length: 28
Host: localhost:17353

但我收到 401 结果。

我必须做什么才能通过外部不记名 token 进行身份验证?

最佳答案

我还没有找到解决这个问题的方法。但我以另一种方式解决了任务。我添加了 HTTP header X-Facebook-Token 并将其传递到那里。在 OAuthAuthorizationServerProvider 的重写方法 GrantResourceOwnerCredentials(context) 中,我从 context.Request.Headers["X-Facebook-Token"] 中捕获了 token 。

string facebookToken = context.Request.Headers["X-Facebook-Token"];
if (facebookToken == null)
{
context.SetError("invalid_grant", "Facebook token was not found in X-Facebook-Token header.");
return;
}

dynamic facebookUser;
if (!FacebookUtil.TryGetUser(facebookToken, out facebookUser))
{
context.SetError("invalid_grant", "Facebook token is incorrect.");
return;
}

在 FacebookUtil.TryGetUser() 中,我使用了 Facebook 库 http://www.nuget.org/packages/facebook
public static bool TryGetUser(string facebookToken, out dynamic user)
{
var facebookClient = new FacebookClient(facebookToken)
{
AppId = AppSettings.FacebookAppId,
AppSecret = AppSettings.FacebookAppSecret
};

try
{
user = facebookClient.Get("me");
return true;
}
catch (Exception)
{
user = null;
return false;
}
}

关于asp.net-mvc - 使用外部不记名 token (MVC4 Web Api) 登录 Facebook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20628334/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com