#node.js #google-cloud-platform #google-bigquery #firebase-authentication #credentials
#node.js #google-облачная платформа #google-bigquery #firebase-аутентификация #учетные данные
Вопрос:
Я пытаюсь создать приложение, в котором пользователь может выполнять запросы к таблицам bigquery. Однако библиотека BigQuery NodeJS требует аутентификации с использованием credentials
объекта.
Как я могу пройти аутентификацию с помощью bigquery, используя того же пользователя, с которым я вошел в firebase.auth()
систему?
const {BigQuery} = require('@google-cloud/bigquery')
const firebase = require('firebase')
const app = firebase.initializeApp(..);
await app.auth().signInWithPopup(..)
const bigQuery = new BigQuery({credentials: ???})
Ответ №1:
Невозможно использовать аутентификацию Firebase для последующего доступа к другим продуктам Google Cloud, таким как BigQuery. Для BigQuery требуется токен OAuth2, в то время как Firebase использует JWTs. Нет способа преобразовать последнее в первое.
Если ваши пользователи входят в Firebase с помощью социального провайдера, они могут использовать токен OAuth2 от этого провайдера для доступа к BigQuery. Но в этом случае это не связано с их сеансом аутентификации Firebase.
Комментарии:
1. Вы знаете, как получить JWT из firebase? Что касается вашего второго пункта, что, если я зарегистрирую их в соответствующей области?
2. 1) Доступна основная Firebase JWR, которая вам будет интересна
user.getIDToken()
. 2) Да, это позволило бы им получить доступ к BigQuery, но, как уже было сказано, на данный момент это больше не имеет ничего общего с Firebase.3. Итак, как бы вы использовали токен OAuth2, полученный из firebase sign, для аутентификации bigquery?
4. @MatanTsuberi — Если этот идентификатор не был добавлен в Google Cloud IAM (что является плохой идеей), токен будет бесполезен для BigQuery. Я рекомендую создать учетную запись службы, которой управляет ваш код в Firebase, который выдает команды от имени пользователя с учетной записью службы, предоставляющей авторизацию для доступа к BigQuery.
5. Спасибо, Джон, это действительно правильный путь, если кто-то хочет интегрировать Big Query в свое приложение. Как уже неоднократно говорилось, это больше не имеет ничего общего с Firebase, поскольку нет способа использовать пользователя аутентификации Firebase для доступа к другим продуктам Google Cloud, таким как BigQuery.