使用服务Acocunt从googlerestapi获取数据

使用服务Acocunt从googlerestapi获取数据,go,google-api,google-bigquery,google-authentication,Go,Google Api,Google Bigquery,Google Authentication,我想从API获取信息(数据)并显示它。使用API从大查询中获取数据 目前,我已经编写了一些代码,这些代码可能会显示来自API的信息,但我不确定如何使用服务帐户作为环境保护 package main import ( "fmt" "io/ioutil" "net/http" "os" ) func main() { response, err := http.Get("https://www.googleapis.com/bigquer

我想从API获取信息(数据)并显示它。使用API从大查询中获取数据

目前,我已经编写了一些代码,这些代码可能会显示来自API的信息,但我不确定如何使用服务帐户作为环境保护

package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
    "os"
)

    func main() {

        response, err := http.Get("https://www.googleapis.com/bigquery/v2/projects/PROJECT_ID/queries/JOB_ID")
        if err != nil {
            fmt.Printf("%s", err)
            os.Exit(1)
        } else {
            defer response.Body.Close()
            contents, err := ioutil.ReadAll(response.Body)
            if err != nil {
                fmt.Printf("%s", err)
                os.Exit(1)
            }
            fmt.Printf("%s\n", string(contents))
        }
    }
预期的结果应该只是显示来自API的数据,然后我需要创建一个API,该API无需使用参数进行身份验证即可访问(如GET方法)


注意:这里是API的链接-

如果您查看文档,您会注意到它表明您调用的方法需要使用以下作用域之一进行身份验证

您试图访问的数据是私人用户数据,您必须通过身份验证才能访问私人用户数据。您似乎没有试图以任何方式进行身份验证

您创建的服务帐户credentalis应该在代码中使用,以便向google发送授权请求

您可以在这里找到有关如何使用服务帐户进行身份验证的一些信息

启用凭据

export GOOGLE_APPLICATION_CREDENTIALS="[PATH]"
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/[FILE_NAME].json"
代码

// Sample bigquery-quickstart creates a Google BigQuery dataset.
package main

import (
        "fmt"
        "log"

        // Imports the Google Cloud BigQuery client package.
        "cloud.google.com/go/bigquery"
        "golang.org/x/net/context"
)

func main() {
        ctx := context.Background()

        // Sets your Google Cloud Platform project ID.
        projectID := "YOUR_PROJECT_ID"

        // Creates a client.
        client, err := bigquery.NewClient(ctx, projectID)
        if err != nil {
                log.Fatalf("Failed to create client: %v", err)
        }

        // Sets the name for the new dataset.
        datasetName := "my_new_dataset"

        // Creates the new BigQuery dataset.
        if err := client.Dataset(datasetName).Create(ctx, &bigquery.DatasetMetadata{}); err != nil {
                log.Fatalf("Failed to create dataset: %v", err)
        }

        fmt.Printf("Dataset created\n")
}

如果查看文档,您会注意到它声明您正在调用的方法需要使用以下作用域之一进行身份验证

您试图访问的数据是私人用户数据,您必须通过身份验证才能访问私人用户数据。您似乎没有试图以任何方式进行身份验证

您创建的服务帐户credentalis应该在代码中使用,以便向google发送授权请求

您可以在这里找到有关如何使用服务帐户进行身份验证的一些信息

启用凭据

export GOOGLE_APPLICATION_CREDENTIALS="[PATH]"
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/[FILE_NAME].json"
代码

// Sample bigquery-quickstart creates a Google BigQuery dataset.
package main

import (
        "fmt"
        "log"

        // Imports the Google Cloud BigQuery client package.
        "cloud.google.com/go/bigquery"
        "golang.org/x/net/context"
)

func main() {
        ctx := context.Background()

        // Sets your Google Cloud Platform project ID.
        projectID := "YOUR_PROJECT_ID"

        // Creates a client.
        client, err := bigquery.NewClient(ctx, projectID)
        if err != nil {
                log.Fatalf("Failed to create client: %v", err)
        }

        // Sets the name for the new dataset.
        datasetName := "my_new_dataset"

        // Creates the new BigQuery dataset.
        if err := client.Dataset(datasetName).Create(ctx, &bigquery.DatasetMetadata{}); err != nil {
                log.Fatalf("Failed to create dataset: %v", err)
        }

        fmt.Printf("Dataset created\n")
}

你的问题是什么?这在您提供的示例中并不清楚。您是否正在寻找使用环境变量的方法?如果是这样:
PROJECT\u ID:=os.Getenv(“PROJECT\u ID”)
@joerivrij他们正在寻找一种方法,可以使用大查询api访问私人用户数据,而无需身份验证。@DaImTo与用户数据无关。我想从大查询结果中获取信息,我想使用身份验证,但使用服务帐户,但不确定在这种情况下如何…检查我发布的两个链接,第一个是关于设置您的凭据,第二个是连接。您的问题是什么?这在您提供的示例中并不清楚。您是否正在寻找使用环境变量的方法?如果是这样:
PROJECT\u ID:=os.Getenv(“PROJECT\u ID”)
@joerivrij他们正在寻找一种方法,可以使用大查询api访问私人用户数据,而无需身份验证。@DaImTo与用户数据无关。我想从大查询结果中获取信息,我想使用身份验证,但使用服务帐户,但不知道如何在这些情况下…检查我发布的两个链接第一个是关于设置您的凭据第二个是连接。我想为服务帐户设置一个环境变量,因为实际URL将为我提供我需要的结果。因此,我不需要从BigQuery进行查询,我只需要一些代码就可以通过使用Service account设置环境身份验证,例如在python中,我使用-os.environ[“GOOGLE_APPLICATION_CREDENTIALS”]=“Service_account.json”,我怀疑它需要指向完整路径。您将无法使用http.get方法。您将需要使用他们提供的示例。点击此链接(“消息”):“请求缺少所需的身份验证凭据。应为OAuth 2访问令牌、登录cookie或其他有效身份验证凭据。请参阅”。我已尝试os.Setenv。”(“谷歌应用程序凭据”,“/auth/GOOGLE\u bigquery.json”)但是仍然不起作用,我想为服务帐户设置一个环境变量,因为实际的URL将为我提供所需的结果。因此,我不需要从BigQuery进行查询,我只需要有一些代码,它将使用服务帐户设置环境身份验证,例如在python中使用-os.environ[”GOOGLE_APPLICATION_CREDENTIALS“]=“service_account.json”我怀疑它需要指向完整路径。您将无法使用http.get方法。您将需要使用他们提供的示例。我点击此链接时出现此类错误-“消息”:“请求缺少所需的身份验证凭据。预期的OAuth 2访问令牌、登录cookie或其他有效身份验证凭据。请参阅“”,我尝试过os.Setenv(“GOOGLE\u APPLICATION\u CREDENTIALS”,“/auth/GOOGLE\u bigquery.json”),但仍然不起作用