在闪亮的应用程序中使用 bigrquery auth

Posted

技术标签:

【中文标题】在闪亮的应用程序中使用 bigrquery auth【英文标题】:Use bigrquery auth in shiny application 【发布时间】:2014-10-08 17:36:03 【问题描述】:

我想创建一个闪亮的应用程序,它利用 bigrquery 连接到 BigQuery API 并运行查询。 我使用以下代码来执行查询:

 library(bigrquery)
    project <- "PROJECT_ID" # put your project ID here
    sql <- 'QUERY '
    test <- query_exec(sql, project = project)

但在此之前,bigrquery 包中有一个身份验证过程,例如:

    google <- oauth_endpoint(NULL, "auth", "token",
      base_url = "https://accounts.google.com/o/oauth2")

    bigqr <- oauth_app("google",
      "465736758727.apps.googleusercontent.com",
      "fJbIIyoIag0oA6p114lwsV2r")

    cred <- oauth2.0_token(google, bigqr,
          scope = c(
              "https://www.googleapis.com/auth/bigquery",
              "https://www.googleapis.com/auth/cloud-platform"))

如何将身份验证过程集成到我的应用程序中

进程不需要交互或 该过程适用于给定的应用密钥和机密(我从哪里获得它们?)或 身份验证过程在另一个浏览器窗口中打开。

问候

【问题讨论】:

【参考方案1】:

我有一个建议,类似于我在关于server-side access to Google Analytics data 的问题上提供的答案,是使用Google Service Account。 Mark Edmondson 的 googleAuthR 包可通过 CRAN 获得,它提供了使用 Google 服务帐户在 R 中执行服务器端身份验证的功能。同一作者的另一个名为 bigQueryR 的软件包也在 CRAN 上,它与 googleAuthR 集成,并使用生成的身份验证令牌来执行对 Google BigQuery 的查询。

要实现这一点:

    为您的 Google API 项目创建一个服务帐户。 下载包含服务帐号私钥的 JSON 文件。 授予服务帐户访问您的 Google BigQuery 项目的权限,方法与授予任何其他用户的方式相同。这是通过您为项目设置权限的 Google API 控制台 IAM 屏幕完成的。 在使用googleAuthR 进行身份验证时,提供私钥 JSON 文件的位置作为参数(参见下面的示例。):

以下示例 R 脚本基于 bigrquery 包中的示例,引用包含私钥的 JSON 文件并执行基本的 Google BigQuery 查询。请记住将 json_file 参数设置为适当的文件路径,并将 project 参数设置为您的 Google BigQuery 项目:

library(googleAuthR)
library(bigQueryR)

gar_auth_service(
  json_file = "API Project-xxxxxxxxxxxx.json",
  scope = "https://www.googleapis.com/auth/bigquery"
)

project <- "project_id" # put your project ID here
sql <- "SELECT year, month, day, weight_pounds
        FROM [publicdata:samples.natality] LIMIT 5"

bqr_query(projectId = project, query = sql, datasetId = "samples")

【讨论】:

以上是关于在闪亮的应用程序中使用 bigrquery auth的主要内容,如果未能解决你的问题,请参考以下文章

Bigrquery 不能强制整数

使用 bigrquery 的 R 循环中的 BigQuery 超时错误

R 中的 Bigrquery 库不上传数据并且不返回错误。按下停止时获取应用程序回调

授予 Simba ODBC 驱动程序或 bigrquery 访问 Google Drive 文件的权限

BigRQuery 如何更新谷歌大查询表中的列?

bigrquery 中的标准 SQL