我一直在研究这个问题,但在我看来,无论如何都无法从现有的 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 包中(处理刷新令牌等)。如果没有其他人这样做,我可能会尝试自己。