207

我正在尝试测试OAuth按钮,但它们(Facebook、Twitter、LinkedIn)都返回错误,似乎表明我无法从本地URL 测试或使用它们。

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

4

12 回答 12

154

2016 年 10 月更新:现在最简单:使用总是指向 的lvh.me127.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

引用文章:

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

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

请注意,现在(2014 年 8 月)bit.ly 不允许将链接转发到本地主机;但是谷歌链接缩短器有效。

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

于 2012-05-05T07:56:47.880 回答
27

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

于 2017-11-28T08:27:55.257 回答
25

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

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

于 2018-09-22T20:42:21.093 回答
7

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

127.0.0.1       mylocal.com
于 2020-01-23T22:04:07.480 回答
4

Set your local domain to mywebsite.example.com (and redirect it to localhost) -- even though the usual is to use mywebsite.dev. This will allow robust automatic testing.

Although authorizing .test and .dev is not allowed, authorizing example.com is allowed in google oauth2.

(You can redirect any domain to localhost in your hosts file (unix/linux: /etc/hosts))

Why mywebsite.example.com?
Because example.com is a reserved domain name. So

  1. there would be no naming conflicts on your machine.
  2. no data-risk if your test system exposes data to not-redirected-by-mistake.example.com.
于 2021-01-02T22:10:15.720 回答
3

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

localhost 名称解析在 DNS 本身内处理。

127.0.0.1 mywebsite.com

完成测试后,您只需评论添加的行以禁用它

127.0.0.1 mywebsite.com

于 2019-04-21T13:22:48.737 回答
2

Google 不允许在 localhost 上使用http://webporject.devor.loc和 .etc 以及 google 短链接测试 auth api,这也缩短了您的本地 url( http://webporject.dev) bit.ly:)。Google 只接受以http://localhost/...

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

设置新别名

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

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

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

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

于 2018-09-18T07:12:28.050 回答
1

我遇到了其他答案中提到的工具的一些问题,例如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

于 2021-04-16T18:47:51.513 回答
1

我发现xip.io会自动将固定 url 转换为嵌入式 localhost 域。

例如,假设您的 localhost 服务器正在运行,127.0.0.1:8000 您可以http://www.127.0.0.1.xip.io:5555/访问该服务器。然后,您可以将此地址添加到 Facebook 或 Google 的 Oauth 配置中。

于 2020-10-08T11:23:02.233 回答
1

此答案仅适用于 Google OAuth

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

显然,您可以localhost在 Google Developer Console 上添加为受信任域,因为 localhost 是大多数规则的例外,如您在此处看到的。

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

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

HTTP 还是 HTTPS?

我再次对 Google 允许使用 http 感到惊讶,但请注意,如果您的应用程序已发布到生产环境,则会存在轻微的安全风险。

如果您想格外谨慎,可以选择坚持使用https。这将要求您在 localhost 服务器上设置 SSL 证书。

这比您想象的要容易,因为 SSL 证书不需要是有效的。许多 http 服务器应该给你这个选项。无论如何,您都必须在浏览器中单击“继续”按钮才能绕过大红色警告。

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

于 2021-07-01T22:24:07.057 回答
0

另一个有价值的选择是https://github.com/ThomasMcDonald/Localhost-uri-Redirector。这是一个非常简单的 html 页面,可以重定向到您在 UI 中配置的任何主机和端口。

该页面托管在 Github https://thomasmcdonald.github.io/Localhost-uri-Redirector上,因此您可以将其用作您的 OAuth2 重定向 url 并在 UI 中配置您的目标主机和端口,它只会重定向到您的应用程序

于 2020-12-24T10:52:27.247 回答
-1

以 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,请注释掉任何内容)

于 2020-04-16T07:07:45.843 回答