作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 Web API 模板。我的目标是通过 Facebook、Twitter 和 Google 注册和授权的 REST 服务。
我可以使用社交网络创建帐户,但不能将另一个社交网络登录名添加到现有帐户。
具体来说,这个方法出现了问题:
// POST api/Account/AddExternalLogin
[Route("AddExternalLogin")]
public async Task<IHttpActionResult> AddExternalLogin(AddExternalLoginBindingModel model)
null
,
AuthenticationTicket ticket = AccessTokenFormat.Unprotect(model.ExternalAccessToken);
BadRequest("External login failure.");
.
AddExternalLoginBindingModel
唯一成员(member)是
ExternalAccessToken
,我正在填充社交网络访问 token 。
AddExternalLogin
方法?
最佳答案
不知道我是否在概念上做错了什么,但我只是通过避免使用 AccessTokenFormat 解决了这个问题;
基本上和你第一次登录时的流程是一样的。但是当您获得 auth token 时,您必须设置 Authorization header (“Bearer”+)并调用以下调整后的 api:
[OverrideAuthentication]
[HostAuthentication(DefaultAuthenticationTypes.ExternalBearer)]
[Route("AddExternalLogin")]
public async Task<IHttpActionResult> AddExternalLogin() {
var info = await Authentication.GetExternalLoginInfoAsync();
if (info == null) {
return InternalServerError();
}
IdentityResult result = await UserManager.AddLoginAsync(User.Identity.GetUserId(), new UserLoginInfo(info.Login.LoginProvider, info.Login.ProviderKey));
Authentication.SignOut(DefaultAuthenticationTypes.ExternalCookie);
if (!result.Succeeded) {
return GetErrorResult(result);
}
return Ok();
}
关于asp.net-web-api - 如何使用 Web API 模板中的 AddExternalLogin 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28052645/
我使用 Web API 模板。我的目标是通过 Facebook、Twitter 和 Google 注册和授权的 REST 服务。 我可以使用社交网络创建帐户,但不能将另一个社交网络登录名添加到现有帐户
我是一名优秀的程序员,十分优秀!