Аутентификация учетной записи службы для удаленного интерфейса Rest Rest API с помощью Go

Лучшая подготовленная инструкция, которую вы, вероятно, могли бы найти в подобной ситуации, похожа на следующее:

SELECT users.id
FROM users
JOIN products
ON products.user_id = users.id
WHERE products IN (?,?,?,?,?,?,?,?)

Затем вы пройдете через свои значения и привяжите их к подготовленному оператору, убедившись, что что существует такое же количество вопросительных знаков, сколько значений, которые вы связываете.

4
задан creativecreatorormaybenot 14 July 2018 в 01:39
поделиться

1 ответ

Существует несколько основных способов аутентификации с помощью API Google, они описаны здесь:

Ссылка на документы

Способы документированы «3-legged OAuth», «Использование ключей API» и, наконец, «Учетные записи службы».

Из ссылок, которые вы включили в вопрос; вы смотрите на примеры Python / Java / Node «Учетные записи службы».

Использование учетных записей службы в go

. oauthHttpClient, о котором вы говорите, является http-клиентом который автоматически добавит информацию аутентификации в запросы.

Вы можете создать ее с помощью этого пакета:

https://godoc.org/golang.org/x/ oauth2 / google

В примерах, связанных на других языках, используется «ключевой файл json для учетной записи службы».

Используя метод, приведенный ниже, вы можете прочитать этот ключевой файл и создать jwt.Config, которая даст вам доступ к клиенту, который вам нужен.

https://godoc.org/golang.org/x/oauth2/google#JWTConfigFromJSON

Идет эквивалент ссылок на другие языки:

data, err := ioutil.ReadFile("/path/to/your-project-key.json")
if err != nil {
    log.Fatal(err)
}
conf, err := google.JWTConfigFromJSON(data, "https://www.googleapis.com/auth/firebase.remoteconfig")
if err != nil {
    log.Fatal(err)
}
// Initiate an http.Client. The following GET request will be
// authorized and authenticated on the behalf of
// your service account.
client := conf.Client(oauth2.NoContext)
client.Get("...")
3
ответ дан Zak 17 August 2018 в 12:03
поделиться
  • 1
    Я бы никогда не извлек это из документов. Это хорошо работает для моих Get запросов. Однако запросы, выполняемые через пакет firebaseremoteconfig-gen , не выполняются, и я не смог исправить их запросы. Я уверен, что он терпит неудачу, потому что они слишком много добавляют к http-запросу gensupport) . Я больше не хочу беспокоиться об этом, потому что я не могу найти решение. Я просто буду контролировать сам JSON, который отлично работает. – creativecreatorormaybenot 17 July 2018 в 12:33
Другие вопросы по тегам:

Похожие вопросы: