ПОЛУЧИТЬ данные из Google REST API, используя Service Acocunt - PullRequest
0 голосов
/ 14 февраля 2019

Я хотел бы получить информацию (данные) из API и отобразить ее.Данные извлекаются из Big Query с использованием 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, который будет доступен без аутентификации с параметрами (как метод GET)

PS Вот ссылка на API- https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs/getQueryResults

1 Ответ

0 голосов
/ 14 февраля 2019

Если вы проверите документацию, вы заметите ее stats Jobs: getQueryResults В нем говорится, что вызываемый вами метод требует, чтобы вы проходили аутентификацию в одной из следующих областей:

enter image description here

Данные, к которым вы пытаетесь получить доступ, являются частными данными пользователя, для получения доступа к личным данным пользователя необходимо пройти проверку подлинности.Похоже, вы не пытаетесь аутентифицироваться каким-либо образом.

Учетная запись службы, которую вы создаете, должна быть использована в вашем коде для отправки запроса на авторизацию в 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")
}
...