【问题标题】:Fail to authenticate BigQuery with R under the bigrquery package无法在 bigrquery 包下使用 R 对 BigQuery 进行身份验证
【发布时间】:2018-12-10 04:33:22
【问题描述】:

我正在尝试使用 bigrquery 包中的 set_service_token 进行非交互式身份验证。

这是我的代码:

library(bigrquery)
set_service_token("client_secret.json")

但它一直显示以下错误消息:

read_input(file) 中的错误:
文件必须是连接、原始向量或文件路径

但是,当我只是读取 JSON 路径时,它可以工作:

lapply(fromJSON("client_secret.json"), names)

$`已安装`
[1] “client_id” “project_id” “auth_uri” “token_uri” “auth_provider_x509_cert_url” “client_secret” “redirect_uris”

谁能帮我解决这个问题?非常感谢!

【问题讨论】:

  • 尝试使用完整位置。错误消息很清楚,您现在拥有的不是函数正在查找的文件名stackoverflow.com/questions/42410147/…
  • 谢谢艾琳!我尝试了您分享的帖子的完整位置。但是,我仍然收到相同的错误消息。

标签: r authentication google-bigquery


【解决方案1】:

看起来您的 JSON 文件位于当前目录中,但您需要提供令牌 JSON 文件的完整路径。试试这个:

json_path <- paste(getwd(), "/client_secret.json", sep="")
set_service_token(json_path)

如果还是不行,你可以使用环境变量试试,像这样:

Sys.setenv("CLIENT_SECRET_FILE" = json_path)
set_service_token(Sys.getenv('CLIENT_SECRET_FILE'))

或者,尝试提供 JSON 内容,如下所示:

set_service_token(toJSON(fromJSON("client_secret.json"), pretty = TRUE))

您也可以尝试使用gar_auth_service:

library(googleAuthR)
gar_auth_service(
  json_file = "client_secret.json" # or better use the full path instead
)

希望它有效。

【讨论】:

  • 感谢 Teekea 的回答!但是,我已经尝试过完整路径和您的代码来连接完整路径。结果是一样的。
  • 你试过使用环境变量吗?请看看我更新的答案。
  • 或者,提供 JSON 内容。请查看更新后的答案。
  • 感谢您的快速回复!我尝试了环境变量方法,但得到了相同的结果。然后我尝试使用您的代码直接提供 JSON 内容。我收到另一条错误消息:错误:参数“txt”必须是 JSON 字符串、URL 或文件。但有趣的是,当我像在问题中所做的那样简单地读取 JSON 文件时,它就起作用了。我现在想知道我是否使用了正确的 JSON 文件。我从 GCP --> "APIs & Services" --> "Credentials" --> "OAuth 2.0 client IDs" 下载了它(我已将类型设置为 'Other')
  • 在您的问题中,您使用fromJSON 读取JSON 文件,对吧?
猜你喜欢
  • 1970-01-01
  • 2017-07-13
  • 1970-01-01
  • 2013-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-04
  • 2011-07-01
相关资源
最近更新 更多