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

时间:2014-10-08 17:36:03

标签: r google-bigquery shiny

我想创建一个闪亮的应用程序,它利用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"))

如何在我的应用程序中集成auth进程

  • 该过程不需要互动或
  • 该过程适用于给定的应用密钥和秘密(我从哪里获取它们?)或
  • auth进程在另一个浏览器窗口中打开。

此致

1 个答案:

答案 0 :(得分:3)

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

实现这一目标:

  1. 为您的Google API项目创建一个服务帐户。
  2. 下载包含服务帐户私钥的JSON文件。
  3. 以与使用其他任何用户相同的方式授予服务帐户对您的Google BigQuery项目的访问权限。这是通过Google API控制台IAM屏幕完成的,您可以在其中为项目设置权限。
  4. 在使用googleAuthR进行身份验证时,提供私钥JSON文件的位置作为参数(请参阅下面的示例。):
  5. 以下示例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")