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

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


当前回答

你也可以使用ngrok: https://ngrok.com/。我一直使用它在我的本地主机上运行一个公共服务器。希望这能有所帮助。

另一个甚至免费提供你自己的自定义域名的选项是serveo.net和https://localtunnel.github.io/www/

其他回答

你也可以使用ngrok: https://ngrok.com/。我一直使用它在我的本地主机上运行一个公共服务器。希望这能有所帮助。

另一个甚至免费提供你自己的自定义域名的选项是serveo.net和https://localtunnel.github.io/www/

2016年10月更新:现在最简单:使用lvh。我总是指向127.0.0.1,但确保验证这仍然是真的,每次你需要调用它(因为域可以过期或被接管,DNS中毒总是一个问题)

之前的回答:

由于回调请求是由浏览器发出的,作为HTTP重定向响应,您可以设置.hosts文件或等效文件,将非localhost的域指向127.0.0.1。

例如,您向Twitter注册了以下回调:http://www.publicdomain.com/callback/。确保www.publicdomain.com在您的hosts文件中指向127.0.0.1,并且twitter可以成功地对www.publicdomain.com进行DNS查找,即域需要存在,并且特定的回调应该在请求时返回200状态消息。

编辑:

我刚刚读了下面的文章:http://www.tonyamoyal.com/2009/08/17/how-to-quickly-set-up-a-test-for-twitter-oauth-authentication-from-your-local-machine,这是从这个问题链接到:Twitter oAuth callbackUrl - localhost development。

引用这篇文章:

你可以用bit。ly,一个URL缩短服务。只需要缩短[localhost URL,如http//localhost:8080/twitter_callback],并在你的Twitter应用程序中注册缩短的URL作为回调。

这应该比在.hosts文件中折腾要简单。

注意现在(2014年8月)位。Ly不允许链接转发到本地主机;但是谷歌链接缩短工作。

PS编辑:(11月18日):谷歌链接缩短器停止支持localhost或127.0.0.1。

这个答案只适用于谷歌OAuth

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

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

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

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

HTTP还是HTTPS?

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

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

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

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

如果你有一个域,你可以创建一个重定向到你的本地入口点的子域,这对我来说很有用

我创建了一个公共子域:oauth-test-local.alexisgatuingt.fr,它用返回的数据将您重定向到http:127.0.0.1:8000/oauth/callback/谷歌

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

127.0.0.1       mylocal.com