Могу ли я создать федеративного пользователя в firebase вручную с помощью API аутентификации администратора?

У меня есть веб-приложение, созданное с использованием FireBase. В моем веб-приложении есть функции Google, Firebase, Twitter для регистрации / входа.

Теперь я хочу интегрировать это с моим агентом api.ai и иметь бесшовную связь с аккаунтом. Следовательно, пользователи будут использовать приложение googel Home / assistant с мобильных устройств для подключения к моему агенту. На этом этапе у меня будет идентификатор учетной записи Google, адрес электронной почты Google, имя пользователя.

Если пользователь уже присутствует, я могу отправить токены, требуемые моим агентом. Но если пользователь новый, я хочу создать учетную запись в моей базе данных Firebase. Я не смог найти возможность создать федеративную учетную запись в firebase вручную (из приложения / облачной функции nodejs)!

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

Если я создаю электронную почту и фиктивный пароль, поток не очень хороший, и я вынужден заставлять пользователей менять пароль и снова связывать свои учетные записи Google, когда они приходят на мой веб-канал!

Существует подход CLI, где я могу импортировать пользователей из файла. Если это возможно, может кто-нибудь, пожалуйста, помогите мне, как я могу сделать это в облачной функции?

1 ответ

ЭТО НЕ ПОЛНЫЙ ОТВЕТ НА ВОПРОС

Основываясь на опции импорта инструментов Firebase, я создал сокращенный список, с помощью которого я могу запустить импорт из облачной функции. Единственный сбой, с которым я сталкиваюсь, - это место, где я должен передать маркер доступа на предъявителя для выполнения действия.

На данный момент я замкнул getAccessToken метод внутри import/api.js, Это место, где мне нужна помощь команды Firebase, чтобы получить токен доступа прямо для администратора Firebase или обойти проверку, когда запрос сделан из облачной функции!

getAccessToken: function() {
    return Promise.resolve({access_token: accessToken});
    // return accessToken ? RSVP.resolve({access_token: accessToken}) : require('./auth').getAccessToken(refreshToken, commandScopes);
  },

В приведенной выше функции прокомментированный код фактически получает accessToken полученный пользователем при выполнении firebase import из инструментов CLI. Как утилита командной строки, запрашивая у пользователя разрешение, работает, но при запуске внутри облачной функции это должен быть один из следующих вариантов, который я мог бы обдумать!

а) поскольку облачные функции выполняются в пределах привилегий администратора, игнорируйте разрешения! б) или предоставить средства для получения токена доступа прямо из административного SDK.

Суть здесь в github. Я взял большую часть из проекта Firebase Tools и немного подправил его, чтобы он работал в рамках cloudFunctions. Я попытался принести как можно меньше кода из firebase-tools.

Когда я запускаю это, ошибки, которые я получаю, находятся в строке 35 lib/import/api.js:

<<< HTTP RESPONSE BODY 
{  
   "error":{  
      "errors":[  
         {  
            "domain":"global",
            "reason":"authError",
            "message":"Invalid Credentials",
            "locationType":"header",
            "location":"Authorization"
         }
      ],
      "code":401,
      "message":"Invalid Credentials"
   }
}
Другие вопросы по тегам