从服务器上的 R 会话访问 BigQuery 的授权

Authorization for accessing BigQuery from R session on server

我正在使用 R 和包 bigrquery 从 R 会话访问 Bigquery。 只要我在我的本地机器上,这就很好用。 但是,当我尝试从远程服务器上的 R 访问 Bigquery 时,它根本不起作用。

我试图将 .httr-oauth 文件复制到我在服务器上的主目录中,但这不起作用。 我收到错误消息:

自动刷新过时的 OAuth 令牌。 refresh_oauth2.0(self$endpoint, self$app, self$credentials) 错误: 客户端错误:(400) 错误请求

我真的不知道在哪里存储必要的凭据,不幸的是我无法通过 google 搜索主题找到任何有用的信息。

默认情况下,bigrquery 用于 oauth 的 httr 将 look in the R session's current working directory 用于 .httr-oauth。您可以使用以下内容覆盖此位置(如果您愿意,可以将其放在您的 .Rprofile 中):

options("httr_oauth_cache"="~/.httr-oauth")

但是对于您收到的错误消息,位置似乎不是问题所在,在远程服务器上重做 oauth 流程以缓存新凭据可能更容易。在远程服务器上触发新的 oauth 流程:

  1. 确保 .httr-oauth 文件不存在
  2. 重启R
  3. 使用 bigrquery 执行一个查询

请注意,如果 httr 尝试重定向到本地主机,您可以强制它执行带外 oauth 流程:

options(httr_oob_default = TRUE)