正如我在此处所读到的,可以将范围添加到facebook身份验证方法(How to access Facebook private information by using ASP.NET Identity (OWIN)?)。
我的要求是从谷歌请求其他范围(例如“https://www.googleapis.com/auth/userinfo.email”)。
在我目前的MVC4应用程序中,这是通过自定义OAuth2Client和SimpleMembership Provider(自定义Nhibernate实现)实现的。
此外,是否可以在没有Entity Framework的情况下创建自定义ASP.NET Identity实现?我对两种不同的技术(Nhibernate,EF)访问我的数据库不是很有信心。
答案 0 :(得分:3)
我一直在研究这个问题,在我看来,无论如何都无法从现有的nuget软件包Microsoft.Owin.Security.Google处理这个问题。
通过从Codeplex下载源http://katanaproject.codeplex.com/SourceControl/latest#src/Microsoft.Owin.Security.Google/GoogleAuthenticationHandler.cs并重新编译它,我能够粗略地工作。我在GoogleAuthenticationHanlder中的授权端点添加了三行:
"&openid.ns.ext2=" +
Uri.EscapeDataString("http://specs.openid.net/extensions/oauth/1.0") +
"&openid.ext2.consumer=" +
Uri.EscapeDataString(requestPrefix.Replace("https://", "").Replace("http://", "")) +
"&openid.ext2.scope=" +
Uri.EscapeDataString("https://www.googleapis.com/auth/glass.timeline https://www.googleapis.com/auth/userinfo.profile")
;
第三行是范围,实际上应该作为属性添加到GoogleAuthenticationOptions上,并且连接成一个以空格分隔的范围列表。
无论如何,上面的补充对我有用。希望有人将这些整合到一个更全面的nuget包中(处理刷新令牌等)。如果没有其他人这样做,我可能会尝试自己。