我有一个R包,可在浏览器中触发Oauth2流(通过httr
)。用户很奇怪,他们的IT部门需要特定的系统默认浏览器(在本例中为IE + Windows)。但是用户需要在其他浏览器中执行OAuth。
我知道R_BROWSER
环境变量,并希望将其临时设置为所需的浏览器。(然后希望在OAuth流程中能够兑现……)
我在Mac上不满意,我的默认浏览器是Safari。我通常的情况R_BROWSER
是
Sys.getenv("R_BROWSER")
#> [1] "/usr/bin/open"
我知道如何通过调用强制从外壳程序或从R强制使用Chrome system()
:
system("/usr/bin/open -a '/Applications/Google Chrome.app' 'http://slate.com'")
但是,如何将这些知识转移到合适的环境中R_BROWSER
呢?这不起作用:
Sys.setenv("R_BROWSER" = "/usr/bin/open -a '/Applications/Google Chrome.app'")
随后browseURL()
,当我使用通常的Safari默认值时。我怀疑答案因操作系统而异。对于Mac OS,似乎希望避免使用open
并且以某种方式直接指定浏览器。
首先,您还应该保存两个browser
选项的先前值,R_BROWSER
以便可以恢复会话的先前状态:
old_R_BROWSER <- Sys.getenv("R_BROWSER")
old_browser <- options()$browser
然后,您可以通过重新运行设置后发布的@ Hack-R命令来实现所需的行为R_BROWSER
。
Sys.setenv("R_BROWSER" = "/usr/bin/open -a '/Applications/Safari.app'")
options(browser = as.vector(Sys.getenv("R_BROWSER")))
browseURL("http://www.google.com") # opens in Safari, though my default is Chrome
(您也可以直接设置options(browser = "/usr/bin/open -a '/Applications/Safari.app'")
并browseURL
工作。)
最后,还原系统状态
Sys.setenv("R_BROWSER" = old_R_BROWSER)
options(browser = old_browser)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句