在默认浏览器中使用参数打开url



如果我们尝试从Go打开一个给定的URL,这很容易,如下面的代码所示(mac):

exec.Command("open", "https://google.com").Run()

但是如果URL有参数,我们怎么做呢?

例如,如果我们试图打开一个facebook登录URL: "https://www.facebook.com/v11.0/dialog/oauth?client_id=123456&redirect_uri=https://example/com",命令失败,退出状态为1。

即使我们为特殊字符?,&和=。URL变为https://www.facebook.com/v11.0/dialog/oauth?client_id=123456&redirect_uri=https://example/com

如果我们使用

,上面的URL会在默认浏览器中打开open https://www.facebook.com/v11.0/dialog/oauth?client_id=123456&redirect_uri=https://example/com

命令在终端。但是从Go开始这样做就失败了!

是否有一种方法可以从Go做同样的事情?

是的,它可以用exec.Command("open", "-a", "safari", url)来完成。但这不会打开默认浏览器,而默认浏览器是用户最有可能登录的地方。

它实际上没有反斜杠。原来在终端中需要反斜杠,因为终端在将字符串发送到浏览器之前会内部转义反斜杠。但是在go的情况下,它只是将原始字符串发送给浏览器。

在Go中使用:

exec.Command("open", "https://www.facebook.com/v11.0/dialog/oauth?client_id=123456&redirect_uri=https://example/com")

从终端命令行:

open https://www.facebook.com/v11.0/dialog/oauth?client_id=123456&redirect_uri=https://example/com

尝试添加反斜杠()

exec.Command("open", "https://www.facebook.com/v11.0/dialog/oauth\?client_id/\=123456/\&redirect_uri/\=https://example/com").Run()

相关内容

  • 没有找到相关文章

最新更新