如果我误用或混淆了 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 库 2.0.20710.0包的早期版本。失败,因为我的搜索没有返回这样的包。
- 使用
OAuthWebSecurity.RegisterOpenIDClient(BuiltInOpenIDClient.Google);
而不是OAuthWebSecurity.RegisterGoogleClient();
失败的原因与使用时相同OAuthWebSecurity.RegisterGoogleClient();
- 访问站点管理并下载 OAuth 库。 由于 NuGet 需要更新而失败
- 由于此处提到的内容(显然,WebMatrix 的一个已知错误), 更新 Nuget失败: http ://forums.asp.net/t/1836913.aspx/1?Error+updating+DotNetOpenAuth+updates+with+NuGet+Gallery
- 打开 Starter Site Template,它已经内置了 OAuth 并且可以正常工作。未能告诉我为什么该站点可以识别
OAuthWebSecurity.RegisterGoogleClient()
而我的站点不能识别,因为没有明确的方法(我知道)来说明第三方软件的哪些软件包、更新和/或版本可能不同。 - 创建一个新的起始站点并从 *"App_Data"* 和"bin"文件夹中复制任何基于 OAuth 的缺失文件。失败在于没有观察到行为变化。
-----------------------------------------更新-------- --------------------------------
到目前为止,至少对我来说,这个问题的最佳解决方案是只使用 WebMatrix 中的“Starter Site”模板,无论我喜欢与否。
然而,我这样做的最大担忧之一是,有太多无关的文件,我不确定我可以删除哪些文件以保持网站清洁,同时仍然让OAuthWebSecurity()
课程完全可访问和正常运行。但是,我只保留了“Starter Site”模板中的“bin”和“App_Data”文件夹(当然包括它们的所有内容),并在移动文件之前删除了其他所有内容(包括 web.config 文件),到目前为止,这对我来说似乎效果很好。
使用上面提到的步骤,我保持我的站点没有不必要的代码,同时仍然可以访问OAuthWebSecurity()
该类。
将来(我想当 WebMatrix 3 发布时)这个错误可能会得到修复,并且 OAuth 库的简单管理站点安装将不需要 WebMatrix 不支持的 NuGet 版本,但在那之前,这是最好的替我回答。