通常当我在桌面R工作室上使用googlesheets包时,它会让我通过基于浏览器的身份验证,我选择我的Google帐户进行身份验证并获得批准。我使用gs_ls()函数进行身份验证。
现在我正在尝试在我的Amazon EC2实例中使用R中的googlesheets包,该实例没有可用的浏览器。如何在此环境中完成身份验证过程?
答案 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