【问题标题】:How to authenticate with googlesheets package in a head less environment(EC2 instance)?如何在无头环境(EC2 实例)中使用 googlesheets 包进行身份验证?
【发布时间】:2018-03-23 10:17:03
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      我基本上所做的是将 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

      【讨论】:

        【解决方案3】:

        这是一个老问题,但我刚刚在 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 的库,你可以使用它。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-02-18
          • 2020-06-09
          • 1970-01-01
          • 2018-02-07
          • 2015-09-11
          • 2017-05-06
          • 1970-01-01
          相关资源
          最近更新 更多