OAuth:如何使用本地网址进行测试?


154

我正在尝试测试OAuth按钮,但是它们(Facebook,Twitter,LinkedIn)全部回来,但都显示错误,表明我无法从本地 URL 测试或使用它们。

如果人们似乎都需要非开发非本地连接环境,人们通常如何使用OAuth进行开发?


我在某个时候回答了这个问题:stackoverflow.com/a/10410838/604511
Jesvin Jose 2012年

Answers:


133

2016年10月更新:现在最简单:使用lvh.me,它始终指向127.0.0.1

上一个答案

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

假设您在Twitter上注册了以下回调:http://www.publicdomain.com/callback/。确保www.publicdomain.com指向您的主机文件中的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开发

引用文章:

您可以使用URL缩短服务bit.ly。只需缩短[localhost URL,例如http // localhost:8080 / twitter_callback],然后将缩短的URL注册为Twitter应用程序中的回调。

这比在.hosts文件中摆弄容易。

请注意,现在(14年8月)bit.ly不允许将链接转发到localhost。但是Google链接缩短器可以工作。

PS编辑:(Nov '18):Google链接缩短器停止提供对localhost或127.0.0.1的支持。


3
我以为服务器正在调用callbackurl,现在意识到oauth使用客户端作为信使,并且服务器之间没有任何连接,这使它更加简单。
克里斯蒂安·贝努瓦

10
值得注意的是,lvh.me由一位名叫Levi Cook的绅士拥有(请参阅gist.github.com/levicook/563675),并且它是私人拥有的。他看起来像个好人,但它不是全球权威机构正式授权的领域,因此它可能“在理论上”在某个时间点停止工作。
Mario Peshev

4
在撰写本文时,Google似乎不允许.me重定向URL中使用花哨的域名扩展名(例如)。结果,lvh.me无法正常工作。我发现lacolhost.com成功了。
PullJosh '18年

3
lvh.me的所有者还可以开始收集您的所有授权代码..​​.
Taylor Buchanan

2
@JonNylander他们可以轻松地更改其DNS记录,以指向另一个站点,该站点透明地存储身份验证代码和状态,并且仍重定向回localhost。除非您定期检查DNS,否则除非他们已经可以访问,否则您不会注意到。唯一会立即注意到的是人们在浏览器上下文之外使用它。
Taylor Buchanan

18

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


13

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

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


1
我认为这更容易!刚刚创建了我的帐户,安装并运行了帐户,./ngrok http 8080 -host-header="localhost:8080"而我使用的是公开网址。
米格尔·雷耶斯

3

Google不允许在本地主机上使用http://webporject.dev.loc和.etc以及google短链接来缩短本地url(http://webporject.dev)的测试身份验证api bit.ly:)。Google只接受以http://localhost/... 开头的网址

如果您想测试google auth api,请按照以下步骤操作...

设置新别名

如果您使用openserver转到设置面板,然后单击aliases tab并单击下拉列表,然后找到localhost并选择它。

现在,您应该通过单击第一个下拉菜单旁边的下一个下拉菜单来选择本地Web项目的根文件夹。

然后单击一个名为的按钮,add然后重新启动opensever。

现在您的本地项目在此链接上可用,http://localhost/ 您也可以将此本地URL粘贴到google auth api到redirect url字段...


3

您可以在Windows或linux Windows上编辑hosts文件:C:\ Windows \ System32 \ Drivers \ etc \ hosts Linux:/ etc / hosts

本地主机名称解析是在DNS本身内处理的。

127.0.0.1 mywebsite.com

完成测试后,只需注释添加的行以禁用它

127.0.0.1 mywebsite.com


对我有用,谢谢。另外,如果您在端口3000上使用例如Node.js,请使用mywebsite.com:3000
flow3r

3

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

127.0.0.1       mylocal.com

0

以Google OAuth为参考

  • 在您的OAuth客户端标签中

    1. 将您的App URI示例(http://localhost:3000)添加到Authorized JavaScript origins URIs
  • 在您的OAuth同意屏幕中

    1. 添加mywebsite.com授权域
  • 在Windows或Linux上编辑hosts文件Windows C:\Windows\System32\Drivers\etc\hosts Linux : /etc/hosts以添加127.0.0.1 mywebsite.com (注意,如果还有其他127.0.0.1,请注释掉所有注释)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.