我试图测试OAuth按钮,但它们都(Facebook, Twitter, LinkedIn)返回错误,似乎表明我不能从本地URL测试或使用它们。

如果开发人员都需要非开发和非本地连接环境,那么他们通常如何使用OAuth的东西进行开发呢?


当前回答

或者您可以使用https://tolocalhost.com/并配置它如何将回调重定向到您的本地站点。您可以指定主机名(如果不同于localhost,即yourapp)。本地和端口号)。仅供开发用途。

其他回答

Mac用户:编辑/etc/hosts文件。如果它是只读的,你必须使用sudo vi /etc/hosts。授权后,oauth服务器发送回调URL,由于该回调URL是在您的本地浏览器上呈现的,因此本地DNS设置将工作:

127.0.0.1       mylocal.com

这个答案只适用于谷歌OAuth

这实际上很简单,我很惊讶它对我有用(我仍然怀疑我的眼睛所看到的)。

显然,您可以在谷歌开发人员控制台中添加localhost作为可信域,因为正如您在这里看到的,localhost是大多数规则的例外。

这可以在OAuth 2.0客户端id的页面中完成。单击编辑,然后添加http://localhost:8000或类似的端口,并单击保存。

在输入框中包含http或https是至关重要的。

HTTP还是HTTPS?

我再次对谷歌允许http感到惊讶,尽管请注意,如果您的应用程序已经发布到生产环境中,则存在一个较小的安全风险。

如果你想更加谨慎,你可以选择坚持使用https。这将要求您在本地主机服务器上设置SSL证书。

这比您想象的要简单,因为SSL证书不需要是有效的。许多http服务器都应该提供这个选项。你将不得不在浏览器中点击“继续”按钮,以绕过红色大警告。

这比http更安全,因为一个)用户将看到一个大的红色警告如果尝试phishy黑客,或者b)唯一一次他们不会看到这个警告如果用户故意设置自托管SSL证书,在这种情况下,他们可能知道他们在做什么(我想病毒可以在技术上做到这一点,但是在这个阶段他们已经得到足够的控制用户的系统去做任何他们想要的)。

参考谷歌OAuth

在您的OAuth客户端选项卡 将你的App URI示例(http://localhost:3000)添加到Authorized JavaScript origins URI中 在你的OAuth同意界面 将mywebsite添加到“授权域名” 在windows或linux windows C:\Windows\System32\Drivers\etc\hosts linux: /etc/hosts上编辑hosts文件,添加127.0.0.1 mywebsite(注意,如果有其他127.0.0.1,请注释掉任何)

我遇到了一些问题,在其他答案中提到的工具,如http://tolocalhost.com不转发查询参数(更不用说你必须访问页面并首先配置它,与https://thomasmcdonald.github.io/Localhost-uri-Redirector/相同的情况)和http://lvh.me对我没有用处,因为我在本地机器上运行代理,需要公共URL指向像http://mywebsite.dev这样的私有URL。

所以我做了自己的工具来满足我的需求,也可以满足你们的需求:

https://redirectmeto.com

例子:

https://redirectmeto.com/https://www.google.com/search?q=puppies

http://redirectmeto.com/http://localhost:4000/oauth/authorize

http://redirectmeto.com/http://client.dev/page

将本地域设置为mywebsite.example.com(并将其重定向到localhost)—尽管通常使用的是mywebsite.dev。这将允许健壮的自动测试。

虽然不允许授权.test和.dev,但在谷歌oauth2中允许授权example.com。

(你可以在你的hosts文件(unix/linux: /etc/hosts)中将任何域重定向到localhost)

为什么mywebsite.example.com ? 因为example.com是保留域名。所以

在您的机器上不会有命名冲突。 如果您的测试系统公开数据,则没有数据风险 到not-redirected-by-mistake.example.com。