3

正如我在这里所读到的,可以将范围添加到 facebook 身份验证方法(如何使用 ASP.NET Identity (OWIN) 访问 Facebook 私人信息?)。

我的要求是向谷歌请求额外的范围(例如“ https://www.googleapis.com/auth/userinfo.email ”)。

在我当前的 MVC4 应用程序中,这是通过自定义 OAuth2Client 和 SimpleMembership Provider(自定义 Nhibernate 实现)实现的。

此外,是否可以在没有实体框架的情况下创建自定义 ASP.NET 标识实现?我对两种不同的技术(Nhibernate、EF)访问我的数据库不是很有信心。

4

1 回答 1

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 包中(处理刷新令牌等)。如果没有其他人这样做,我可能会尝试自己。

于 2013-11-03T04:59:23.220 回答