我正在尝试测试oauth按钮,但他们所有(Facebook,Twitter,LinkedIn)都会返回错误,这些错误似乎表明我无法在本地网址上测试或使用它们。
如果人们似乎都需要非开发和非本地连接环境,人们通常如何使用oauth工作进行开发?
答案 0 :(得分:96)
2016年10月更新:现在最简单:使用始终指向127.0.0.1
的{{3}}。
上一个答案:
由于回调请求是由浏览器发出的,作为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状态如有要求,请留言。
修改强>:
我刚刚阅读了以下文章:lvh.me,该问题与此问题相关联:http://www.tonyamoyal.com/2009/08/17/how-to-quickly-set-up-a-test-for-twitter-oauth-authentication-from-your-local-machine/。
引用文章:
您可以使用bit.ly这一URL缩短服务。只需缩短[localhost URL,例如http // localhost:8080 / twitter_callback],并将缩短的URL注册为Twitter应用程序中的回调。
这比在.hosts文件中摆弄更容易。
注意,现在(2014年8月)bit.ly不允许链接转发到localhost;但谷歌链接缩短工作。
PS编辑:( 11月18日):Google链接缩短程序停止支持localhost或127.0.0.1。
答案 1 :(得分:5)
您还可以使用ngrok:https://ngrok.com/。我一直使用它在本地主机上运行公共服务器。希望这会有所帮助。
答案 2 :(得分:4)
对于Mac用户,请编辑/etc/hosts
文件。您必须使用sudo vi /etc/hosts
(如果它是只读的)。授权后,oauth服务器将发送回调URL,并且由于该回调URL在您的本地浏览器中呈现,因此本地DNS设置将起作用:
127.0.0.1 mylocal.com
答案 3 :(得分:4)
将您的本地域设置为 mywebsite.example.com
(并将其重定向到 localhost)——即使通常使用的是 mywebsite.dev
。这将允许强大的自动测试。
虽然不允许授权 .test
和 .dev
,但在 google oauth2 中允许授权 example.com
。
(您可以将任何域重定向到主机文件中的 localhost (unix/linux: /etc/hosts
))
为什么是mywebsite.example.com
?
因为 example.com
是保留域名。所以
not-redirected-by-mistake.example.com
。答案 4 :(得分:1)
我发现xip.io会自动将固定网址转换为嵌入式localhost域。
例如,假设您的本地主机服务器正在127.0.0.1:8000
上运行
您可以转到http://www.127.0.0.1.xip.io:5555/
来访问此服务器。
然后,您可以将此地址添加到Facebook或Google的Oauth配置中。
答案 5 :(得分:0)
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/
上找到
您也可以将此本地网址粘贴到google auth api到redirect url
字段...
答案 6 :(得分:0)
您可以在Windows或Linux上编辑主机文件 Windows:C:\ Windows \ System32 \ Drivers \ etc \ hosts Linux:/ etc / hosts
localhost名称解析是在DNS本身中处理的。
127.0.0.1 mywebsite.com
完成测试后,只需注释添加的行以禁用它
127.0.0.1 mywebsite.com
答案 7 :(得分:0)
以Google OAuth作为参考
在您的 OAuth客户端标签
<div class="timesheet">
Hello there!
</div>
添加到授权的JavaScript起源 URI 在您的 OAuth同意屏幕
(http://localhost:3000)
添加到授权域 在Windows或Linux mywebsite.com
Windows C:\Windows\System32\Drivers\etc\hosts
上编辑hosts文件以添加Linux : /etc/hosts
(注意,如果还有其他127.0.0.1,请注释掉所有注释)
答案 8 :(得分:0)
我在使用其他答案中提到的工具时遇到了一些问题,例如 http://tolocalhost.com 不转发查询参数(更不用说您必须先访问该页面并对其进行配置,与 https://thomasmcdonald.github.io/Localhost-uri-Redirector/ 的情况相同)和 http://lvh.me 对我没有用,因为我在本地机器上运行代理并且需要公共 URL 指向私有 URL,例如 http://mywebsite.dev。
所以我制作了自己的工具来满足我的需求,也可能满足你的需求:
示例:
https://redirectmeto.com/https://www.google.com/search?q=puppies
http://redirectmeto.com/http://localhost:4000/oauth/authorize
答案 9 :(得分:0)
此答案仅适用于 Google OAuth
它实际上非常简单,我很惊讶它对我有用(我仍然怀疑我的眼睛所看到的)。
显然,您可以在 Google Developer Console 上将 localhost
添加为受信任域,因为 localhost 是大多数规则的例外,如您所见 here。
这可以在 OAuth 2.0 客户端 ID 下完成 on this page。点击编辑,然后添加 http://localhost:8000
或类似端口,然后点击保存。
在输入框中包含 http
或 https
至关重要。
HTTP 还是 HTTPS?
我再次对 Google 允许 http 感到惊讶,但请注意,如果您的应用程序已发布到生产环境,则存在轻微的安全风险。
如果你想格外小心,你可以选择坚持使用https。这将要求您在 localhost 服务器上设置 SSL 证书。
这比您想象的要容易,因为 SSL 证书不需要有效。许多 http 服务器应该给你这个选项。无论如何,您都必须在浏览器中单击“仍然继续”按钮才能绕过红色大警告。
这比 http 更安全,因为 a) 如果黑客正在尝试一些钓鱼行为,用户会看到一个很大的红色警告,或者 b) 他们不会看到此警告的唯一时间是用户有意设置了一个自托管 SSL 证书,在这种情况下,他们可能知道自己在做什么(我认为病毒在技术上也可以做到这一点,但在那个阶段,他们已经获得了对用户系统的足够控制,可以做他们想做的任何事情)。>