如果我错误地使用或混淆了OpenID和OAuth这些术语,我道歉,因为我还是对这个分散式登录过程很陌生。
我已经尝试了几天,想让我的网站(在WebMatrix中构建)识别Google登录。 问题是我需要这行代码(根据我的研究)放在我的_AppStart.cshtml
文件中:
OAuthWebSecurity.RegisterGoogleClient();
但是,当我在这个语句处运行网站时,我只会收到一个服务器错误,提示当前上下文中不存在
OAuthWebSecurity.RegisterGoogleClient();
。我认为可能需要OAuth库、其他帮助程序或其他软件包,但我只看到一个相关的软件包(Microsoft WebPages OAuth library 2.0.20710.0),但我无法获取它,因为WebMatrix不支持NuGet的版本(2.0)。
我以前从未使用过这种登录方法,并想在为客户构建此功能时学习如何使用。但我不想去打开起始模板,然后复制我的文件。我有一个问题,就是我不理解的代码。我觉得这对我来说是一个可怕的习惯(甚至在使用jQuery插件之前,我也需要一些自我说服)。另外,也值得一提的是,我将不使用任何第三方服务进行此登录。我们使用gmail作为员工公司电子邮件账户,因此我只需要使用Google登录即可。
我尝试过的事情:
- 搜索类似于我这样的其他场景。 失败,因为没有找到相关的搜索结果(即,我无法找到与我的场景匹配的结果)
- 搜索早期版本的Microsoft WebPages OAuth library 2.0.20710.0软件包。 失败,因为我的搜索没有返回这样的软件包。
- 使用
OAuthWebSecurity.RegisterOpenIDClient(BuiltInOpenIDClient.Google);
而不是OAuthWebSecurity.RegisterGoogleClient();
失败的原因与使用OAuthWebSecurity.RegisterGoogleClient();
相同 - 访问网站管理并下载OAuth库。 NuGet需要更新,因此失败
- 更新Nuget 失败,因为出现了这里提到的问题(显然,这是WebMatrix已知的一个错误):http://forums.asp.net/t/1836913.aspx/1?Error+updating+DotNetOpenAuth+updates+with+NuGet+Gallery
- 打开起始网站模板,该模板已经内置了OAuth并且可以正常使用。无法教会我为什么这个站点认识
OAuthWebSecurity.RegisterGoogleClient()
而我的不认识,因为没有明确的方法(我所知道的)来确定可能不同的第三方软件的包、更新和/或版本。 - 创建新的起始网站,并从*"App_Data"*和"bin"文件夹中复制任何基于OAuth的缺失文件。 失败,因为没有观察到任何行为上的变化。
-----------------------------------------更新----------------------------------------
到目前为止,对于我来说,这个问题的最佳解决方案是使用WebMatrix中的“Starter Site”模板,不管我是否喜欢它。
然而,我最大的担心之一是有太多无关的文件,我不确定哪些文件可以删除,以使网站保持干净,同时仍然保留OAuthWebSecurity()
类的完全访问和功能。 然而,在将我的文件移动过去之前,我只保留了“Starter Site”模板中的“bin”和“App_Data”文件夹(当然包括它们的所有内容),并删除了其他所有文件(包括web.config文件),目前看来这对我非常有效。
使用上述步骤,我将网站保持干净,而仍然可以访问OAuthWebSecurity()
类。
在未来(我想象中WebMatrix 3发布后),这个bug可能会被修复,OAuth库的简单管理网站安装将不需要WebMatrix不支持的NuGet版本,但在那之前,这对我来说是最好的答案。