asp.net-mvc – 从MVC5框架OAuth/OWin身份提供程序与外部auth提供程序获取ExtraData
|
我试图在VS 2013预览中使用新的MVC5框架。 会员身份验证框架已经大修,并替换为OWin。 特别是,我打开了外部验证提供程序Google auth。 这是很容易做到的。 只需取消注释此行:app.UseGoogleAuthentication();在Startup.Auth.cs文件中的新的默认MVC项目的App_Start目录中。 所以,我想访问来自身份验证提供程序的“额外数据”,如用户的头像的url,以显示在我的应用程序。 在旧的OAuth实现反对asp.net成员提供程序,有一种方法来捕获此使用此ExtraData字典在这里找到:ProviderDetail.ExtraData Property。 我找不到有关OAuth和OWin如何协同工作以及如何访问这些额外数据的文档。 任何人都可以启发我? 解决方法最近我不得不访问Google个人资料的图片,这里是我如何解决它…如果您只是启用代码app.UseGoogleAuthentication();在Startup.Auth.cs文件中还不够,因为在这种情况下,Google不会返回有关个人资料图片的任何信息(或者我没有找到如何获取它)。 您真正需要的是使用OAuth2集成,而不是默认情况下启用的Open ID。这里是我怎么做的… 首先,您必须在Google端注册您的应用,并获取“客户端ID”和“客户端密钥”。一旦这样做,你可以进一步(你将需要它以后)。详细信息如何做到here。 替换app.UseGoogleAuthentication();与 var googleOAuth2AuthenticationOptions = new GoogleOAuth2AuthenticationOptions
{
ClientId = "<<CLIENT ID FROM GOOGLE>>",ClientSecret = "<<CLIENT SECRET FROM GOOGLE>>",CallbackPath = new PathString("/Account/ExternalGoogleLoginCallback"),Provider = new GoogleOAuth2AuthenticationProvider() {
OnAuthenticated = async context =>
{
context.Identity.AddClaim(new Claim("picture",context.User.GetValue("picture").ToString()));
context.Identity.AddClaim(new Claim("profile",context.User.GetValue("profile").ToString()));
}
}
};
googleOAuth2AuthenticationOptions.Scope.Add("email");
app.UseGoogleAuthentication(googleOAuth2AuthenticationOptions);
之后,您可以使用该代码访问个人资料的图片网址,就像任何其他属性一样 var externalIdentity = HttpContext.GetOwinContext().Authentication.GetExternalIdentityAsync(DefaultAuthenticationTypes.ExternalCookie);
var pictureClaim = externalIdentity.Result.Claims.FirstOrDefault(c => c.Type.Equals("picture"));
var pictureUrl = pictureClaim.Value; (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – ASP.NET MVC – 在哪里抛出异常?
- asp.net – 在Global.asax方法中将与Autofac注册的组件的相
- bin文件中的任何文件是否有任何更改会导致ASP.NET Web应用程
- 什么是asp.net会话超时的单位?
- asp.net-mvc-3 – ASP.Net MVC 3剃刀:部分定义但未呈现错误
- asp.net – 如何正确编码mailto链接?
- asp.net – 将数值强制为HTML表导出为excel的文本
- 在ASP.NET mvc 4中使用Ninject时是否需要控制器工厂
- .net – 设置页面标题不起作用
- asp.net-mvc – MVC Radiobutton绑定复杂对象
- asp.net – $(“#dialog”).parent().appendTo($
- 将自定义ValueProviderFactories添加到ASP.NET M
- ASP.NET MVC Web API2 AngularJS授权和身份验证
- 为什么我不能在我的代码asp.net c#中使用app_cod
- iis-7 – IIS重置会强制缓存项目重新发送吗?
- asp.net – 什么是建议替代常见的破坏app_offlin
- asp.net-mvc – 禁止使用[授权]操作过滤器的控制
- asp.net-mvc – Bower,Grunt和Yeoman如何适应Vis
- ASP.NET 2.0:编写错误页面的最佳实践
- asp.net – 连接到源文件XYZ的撤消管理器时出错
