C# 如何使用两个外部OAuth 2 OWIN提供程序(用于单独登录和获取LinkedIn配置文件数据)
我们希望允许登录到MVC Razor网站,使用OAuth提供商的常见分类: e、 gC# 如何使用两个外部OAuth 2 OWIN提供程序(用于单独登录和获取LinkedIn配置文件数据),c#,razor,oauth,linkedin,owin,C#,Razor,Oauth,Linkedin,Owin,我们希望允许登录到MVC Razor网站,使用OAuth提供商的常见分类: e、 g 谷歌/谷歌+ Microsoft帐户 脸谱网 LinkedIn 这些功能本身都可以很好地工作,但是我们需要有额外的选项来导入用户的个人资料数据,特别是从LinkedIn导入,而不管他们如何登录 作为获取LinkedIn配置文件的测试,我们成功地将LinkedIn中的访问令牌存储在ApplicationUser对象中,如下所示: public async Task<ActionResult>
- 谷歌/谷歌+
- Microsoft帐户
- 脸谱网
LinkedIn
中的访问令牌存储在ApplicationUser
对象中,如下所示:
public async Task<ActionResult> ExternalLoginConfirmation(ExternalLoginConfirmationViewModel model, string returnUrl)
{
if (User.Identity.IsAuthenticated)
{
return RedirectToAction("Manage");
}
if (ModelState.IsValid)
{
// Get the information about the user from the external login provider
var info = await AuthenticationManager.GetExternalLoginInfoAsync();
if (info == null)
{
return View("ExternalLoginFailure");
}
var user = new ApplicationUser() { UserName = model.Email, Email = model.Email };
//check claims here
if (info.Login.LoginProvider.ToLower()=="linkedin")
{
var claim = info.ExternalIdentity.Claims.First(p => p.Type == "urn:linkedin:accesstoken");
if (claim != null)
{
user.OAuthAccessToken = claim.Value;
}
}
IdentityResult result = await UserManager.CreateAsync(user);
当然,这只有在他们使用LinkedIn登录时才有效
我们真正想要的是通过OAuth登录,比如说Google,然后让用户选择性地登录到他们的LinkedIn帐户,以获取访问令牌并获取配置文件数据
OWIN是否支持创建不更改当前登录名的附加OAuth登录名?最新的Razor模板提供了太多的框架代码,我不知道最好的方法是什么。您能分享一下这个问题的解决方案吗。我也面临同样的问题。@Illep:看起来我们有没有收到过解决方案?我们将该功能停驻以备将来调查。抱歉:(因为这个问题是在2014年发布的,我觉得你现在可能已经找到了答案。@Illep:Nah…非常长的项目。本周刚刚发布第一个版本进行测试。
var usertoken = UserManager.FindById(User.Identity.GetUserId()).OAuthAccessToken;