Oauth - 如何使用本地网址进行测试?

Awe*_*ess 126 oauth

我正在尝试测试oauth按钮,但他们都(Facebook,Twitter,LinkedIn)回来时出现的错误似乎表明我无法测试或使用本地网址.

如果人们似乎都需要非开发和非本地连接环境,那么人们通常如何使用oauth工作进行开发?

Jon*_*der 113

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

上一个答案:

由于回调请求由浏览器发出,作为HTTP重定向响应,您可以设置.hosts文件或等效文件以指向不是localhost127.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],并将缩短的URL注册为Twitter应用程序中的回调.

这应该比在.hosts文件中摆弄更容易.

请注意,现在(2014年8月)bit.ly不允许链接转发到localhost; 但谷歌链接缩短工作.

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

  • 值得注意的是,lvh.me由一位名叫Levi Cook的绅士所拥有(见https://gist.github.com/levicook/563675)并且是私有的.他看起来像个好人,但它不是全球权威机构的正式授权域,所以它可能"理论上"在某个时间点停止工作. (5认同)
  • 截至撰写本文时,Google似乎不允许在重定向网址中使用花哨的域扩展名(如`.me`).结果,lvh.me无法正常工作.我发现http://lacolhost.com/取得了成功. (4认同)
  • 我认为服务器正在调用callbackurl,现在意识到oauth使用客户端作为信使,并且服务器之间没有连接,这使得它变得更加简单. (3认同)
  • lvh.me 的所有者也可以开始收集您的所有授权码... (3认同)
  • @JonNylander 他们可以轻松地更改他们的 DNS 记录以指向另一个站点,该站点透明地存储了身份验证代码和状态,并且仍然重定向回本地主机。除非您定期检查 DNS,否则在他们已经可以访问之前您不会注意到。唯一会立即注意到的是人们在浏览器上下文之外使用它。 (2认同)

Jør*_*gen 15

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

  • 该网站不转发 url 参数(至少在 Firefox 中) (2认同)

use*_*830 9

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

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

  • 这比我想象的要容易!刚刚创建了我的帐户,安装了它并运行了`./ngrok http 8080 -host-header="localhost:8080"`,我正在使用公共网址运行。 (2认同)

小智 7

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

127.0.0.1       mylocal.com
Run Code Online (Sandbox Code Playgroud)


X''*_*X'' 6

将您的本地域设置为mywebsite.example.com(并将其重定向到本地主机)——即使通常是使用mywebsite.dev. 这将允许强大的自动测试。

虽然授权.test.dev不允许,但是在google oauth2中授权example.com 是允许的。

(您可以将任何域重定向到主机文件中的本地主机(unix/linux:)/etc/hosts

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

  1. 您的机器上不会有命名冲突。
  2. 如果您的测试系统将数据暴露给not-redirected-by-mistake.example.com.


Kod*_*ham 5

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