Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OAuth:如何使用本地URL进行测试?_Oauth_Localhost - Fatal编程技术网

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

OAuth:如何使用本地URL进行测试?,oauth,localhost,Oauth,Localhost,我试图测试按钮,但它们(Facebook、Twitter、LinkedIn)都出现了错误,似乎表明我无法从本地URL测试或使用它们 如果人们似乎都需要一个非开发和非本地连接环境,那么他们通常如何使用OAuth工具进行开发呢?2016年10月更新:现在最简单:使用它总是指向127.0.0.1 先前的答案: 由于回调请求是由浏览器发出的,因此作为HTTP重定向响应,您可以将.hosts文件或等效文件设置为指向一个不是localhost的域,使其指向127.0.0.1 例如,假设您在Twitter上注

我试图测试按钮,但它们(Facebook、Twitter、LinkedIn)都出现了错误,似乎表明我无法从本地URL测试或使用它们


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

2016年10月更新:现在最简单:使用它总是指向
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可以在上进行成功的DNS查找,即域需要存在,如果请求,特定回调可能会返回200状态消息

编辑

我刚刚读了以下文章:,这是从这个问题链接到的:

引用这篇文章:

您可以使用bit.ly,一种URL缩短服务。只需缩短[localhost URL,如http//localhost:8080/twitter\u callback],并将缩短后的URL注册为twitter应用程序中的回调

这应该比在.hosts文件中乱翻容易

请注意,现在(2014年8月)bit.ly不允许链接转发到本地主机;然而,谷歌链接缩短器工作


PS edit:(11月18日):Google link shortener停止支持localhost或127.0.0.1。

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

谷歌不允许使用
http://webporject.dev
.loc
和.etc以及缩短本地url(
http://webporject.dev
)也是
bit.ly
:)。谷歌只接受以
http://localhost/

如果你想测试GoogleAuthAPI,你应该遵循以下步骤

如果您使用
openserver
进入设置面板,单击
别名选项卡
并单击下拉列表,然后找到
localhost
并选择它

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

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

现在您的本地项目可在此链接
http://localhost/
您还可以将此本地url粘贴到google auth api以
重定向url
字段…

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


另一个甚至免费提供您自己的自定义域的选项是serveo.net,您可以在windows或linux上编辑主机文件 Windows:C:\Windows\System32\Drivers\etc\hosts Linux:/etc/hosts

本地主机名解析在DNS本身内处理。 127.0.0.1 mywebsite.com

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

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

127.0.0.1       mylocal.com

以googleoauth为参考

  • 在您的OAuth客户端中

  • 添加你的应用URI示例
    (http://localhost:3000)
    授权的JavaScript源代码URI
  • 在您的OAuth同意屏幕中

  • mywebsite.com
    添加到授权域
  • 在windows或linux上编辑主机文件
    windows C:\windows\System32\Drivers\etc\hosts
    linux:/etc/hosts
    以添加
    127.0.0.1 mywebsite.com
    (注意:如果有任何其他127.0.0.1,请将其注释掉)

我找到了一个自动将固定url转换为嵌入式本地主机域的方法

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

另一个有价值的选项是。这是一个非常简单的html页面,可以重定向到您在UI中配置的任何主机和端口


该页面位于Github上,因此您可以将其用作OAuth2重定向url,并在UI中配置您的目标主机和端口,它只会重定向到您的应用程序

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

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

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

为什么
mywebsite.example.com

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

  • 您的计算机上不会有命名冲突
  • 如果测试系统公开数据,则无数据风险 没有错误地重定向到
    。example.com

  • 我在其他答案中提到的工具中遇到了一些问题,例如不转发查询参数(更不用说您必须先访问页面并对其进行配置,情况与相同)和