在没有浏览器的情况下在AWS Ubuntu上validationGoogle表格

我在AWS“Ubuntu Server 12.04.2”上运行R Studio,并通过浏览器访问R Studio。

当我尝试validation谷歌身份validationAPI使用包的代码为: gs_auth(token = NULL, new_user = FALSE, key = getOption("googlesheets.client_id"), secret = getOption("googlesheets.client_secret"), cache = getOption("googlesheets.httr_oauth_cache"), verbose = TRUE)

这里的问题是,它redirect到浏览器是本地机器(基于Windows)。 即使我授权,它也会redirect到一个像“ http:// localhost:1410 /?state = blahblah&code = blahblah ”这样的URL。

如何在这种情况下授权Google表格?

我甚至尝试从我的Windows机器转移现有的httr-oauth令牌来删除Ubuntu服务器。

从服务器创建gs_auth标记的最简单方法是将httr_oob_default选项设置为true,这将告诉httr使用带外方法进行身份验证。 您将获得一个URL,并期望返回一个授权码。

 library(googlesheets) options(httr_oob_default=TRUE) gs_auth(new_user = TRUE) gs_ls() 

httr在设置httr_oob_default选项时做的一件事是重新定义URI到urn:ietf:wg:oauth:2.0:oob如oauth-init的代码所示。

或者,您可以使用httr命令手动创建.httr-oauth标记。 通过在oauth2.0_token命令中设置use_oob=TRUE来使用带外验证模式。

 library(googlesheets) library(httr) file.remove('.httr-oauth') oauth2.0_token( endpoint = oauth_endpoints("google"), app = oauth_app( "google", key = getOption("googlesheets.client_id"), secret = getOption("googlesheets.client_secret") ), scope = c( "https://spreadsheets.google.com/feeds", "https://www.googleapis.com/auth/drive"), use_oob = TRUE, cache = TRUE ) gs_ls() 

另一个较不优雅的解决方案是在桌面上创建.httr-oauth标记,然后将该文件复制到服务器。

经过很多人的冲击之后,我发现支持HTTP处理和来自R的WebSocket请求的包“httpuv”正在产生问题。 这迫使R打开网页浏览器。 一旦我卸载了这个软件包,“googlesheets”给了我一个链接,我可以单独粘贴到浏览器中,然后将授权码粘贴回R服务器。