如何在无头环境(EC2实例)中使用googlesheets包进行身份验证?

时间:2017-10-11 16:30:00

标签: r authentication amazon-ec2 google-sheets-api r-googlesheets

通常当我在桌面R工作室上使用googlesheets包时,它会让我通过基于浏览器的身份验证,我选择我的Google帐户进行身份验证并获得批准。我使用gs_ls()函数进行身份验证。

现在我正在尝试在我的Amazon EC2实例中使用R中的googlesheets包,该实例没有可用的浏览器。如何在此环境中完成身份验证过程?

3 个答案:

答案 0 :(得分:2)

这是一个古老的问题,但是我只是在ec2上使用带有Google表格的python遇到了同样的问题,并且在搜索时发现了这个问题。这是我解决的方法。

尝试通过python连接到Google表格时,此消息弹出:

Please visit this URL to authorize this application: 
https://accounts.google.com/o/oauth2/auth?#######

我将网址放入本地计算机上的浏览器中,并选择了我的Google帐户进行身份验证,该网址已获得批准。但是,ec2实例仍然被卡住。

认证后浏览器中的URL更改为localhost链接。我打开了与ec2实例的第二个连接,然后使用python请求库

import requests
requests.get(localhost_url_from_browser)

然后python脚本成功继续。我确定R studio拥有一个类似于python请求的库。

请注意,这并不要求该网页可以公开访问。

答案 1 :(得分:0)

您可以参考此thread。它声明从服务器创建gs_auth令牌的最简单方法是将httr_oob_default选项设置为true,这将告诉httr使用带外方法进行身份验证。您将获得一个URL,并希望返回授权码。

您还可以查看此Google Sheets R API教程,了解如何使用googlesheets从R访问和管理Google电子表格。

答案 2 :(得分:0)

我找到了这个问题的解决方案。

我基本上做的是将Google表格作为网页发布,并将访问权限设置为公开。如果我们这样做,我们可以访问谷歌表,而无需任何基于浏览器的身份验证。我使用了以下代码 -

sheet_key='xxxxxxxxxxxxxxxxxxxx'
sheetdata <- sheet_key %>%  gs_key(lookup = FALSE) %>% gs_read()

Sheet key基本上是/ d和/ edit

之间的url部分

https://docs.google.com/spreadsheets/d/xxxxxxxxxxxxxxxxxxxx/edit#gid=0