大佬教程收集整理的这篇文章主要介绍了asp.net-mvc – 从MVC5框架OAuth/OWin身份提供程序与外部auth提供程序获取ExtraData,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
会员身份验证框架已经大修,并替换为OWin。
特别是,我打开了外部验证提供程序Google Auth。
这是很容易做到的。
只需取消注释此行:app.UseGoogleAuthentication();在Startup.Auth.cs文件中的新的默认MVC项目的App_Start目录中。
所以,我想访问来自身份验证提供程序的“额外数据”,如用户的头像的url,以显示在我的应用程序。
在旧的OAuth实现反对asp.net成员提供程序,有一种方法来捕获此使用此ExtraData字典在这里找到:ProviderDetail.ExtraData Property。
我找不到有关OAuth和OWin如何协同工作以及如何访问这些额外数据的文档。
任何人都可以启发我?
如果您只是启用代码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 – 从MVC5框架OAuth/OWin身份提供程序与外部auth提供程序获取ExtraData全部内容,希望文章能够帮你解决asp.net-mvc – 从MVC5框架OAuth/OWin身份提供程序与外部auth提供程序获取ExtraData所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。