通常,当我在桌面 R 工作室上使用 googlesheets 包时,它会让我通过基于浏览器的身份验证,在其中我选择我的 Google 帐户进行身份验证并获得批准。我使用 gs_ls() 函数进行身份验证。
现在我正在尝试在我的 Amazon EC2 实例中使用 R 中的 googlesheets 包,该实例没有可用的浏览器。如何在此环境中完成身份验证过程?
通常,当我在桌面 R 工作室上使用 googlesheets 包时,它会让我通过基于浏览器的身份验证,在其中我选择我的 Google 帐户进行身份验证并获得批准。我使用 gs_ls() 函数进行身份验证。
现在我正在尝试在我的 Amazon EC2 实例中使用 R 中的 googlesheets 包,该实例没有可用的浏览器。如何在此环境中完成身份验证过程?
这是一个老问题,但我刚刚在 ec2 上使用 python 和谷歌表格遇到了同样的问题,并在搜索时发现了这个问题。这是我解决它的方法。
在尝试从 python 连接到谷歌表时,弹出此消息:
Please visit this URL to authorize this application:
https://accounts.google.com/o/oauth2/auth?#######
我将 url 放入本地计算机上的浏览器中,并选择了我的 Google 帐户进行身份验证,它得到了批准。但是,ec2 实例仍然卡住了。
身份验证后浏览器中的 url 更改为 localhost 链接。我打开了到 ec2 实例的第二个连接,并使用 python 请求库,我做到了
import requests
requests.get(localhost_url_from_browser)
然后 python 脚本继续成功。我确信 R studio 有一个类似于 python requests 的库,你可以使用它。
请注意,这并不要求网页可以公开访问。
你可以参考这个线程。它指出,gs_auth
从服务器创建令牌的最简单方法是将httr_oob_default
选项设置为 true,这将告诉 httr 使用带外方法进行身份验证。您将获得一个 URL,并期望返回一个授权码。
您还可以查看此Google Sheets R API教程,了解如何使用 googlesheets 从 R 访问和管理 Google 电子表格。
我找到了这个问题的解决方案。
我基本上所做的是将 Google 表格发布为网页并将访问权限设置为公开。如果我们这样做,我们可以在没有任何基于浏览器的身份验证的情况下访问谷歌表。我使用了以下代码-
sheet_key='xxxxxxxxxxxxxxxxxxxx'
sheetdata <- sheet_key %>% gs_key(lookup = FALSE) %>% gs_read()
工作表键基本上是 /d 和 /edit 之间的 url 部分
https://docs.google.com/spreadsheets/d/xxxxxxxxxxxxxxxxxxxx/edit#gid=0