Как импортировать firebase в скрипт приложений Google, чтобы создавать пользователей с помощью провайдера Google?

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

Самое близкое к учебнику, которое я нашел, это это, но я застреваю при попытке импортировать firebase.

Один метод, который я часто вижу, — это импортировать его через тег script в html для боковой панели листов.

<!DOCTYPE html>
<html>
  <head>
    <base target = "_top">
  </head>
  <body>
    <script>
      // Initialize Firebase
      var config = {
        apiKey: '...,
        authDomain: '...',
        databaseURL: '...',
        projectId: '...',
        storageBucket: '...',
        messagingSenderId: '...'
      };
      firebase.initializeApp(config);
    </script>
</body>
</html>

Однако, когда я пытаюсь использовать переменную firebase в моем сценарии .gs, она не определена. Как я могу сделать его доступным для сценария?

Другой метод, который я видел, — это использование eval и URLFetchApp в скрипте gs.

eval(UrlFetchApp.fetch("https://www.gstatic.com/firebasejs/5.9.2/firebase.js").getContentText());

Это приводит к SyntaxError: Missing name after . operator. Я думаю, это потому, что эта библиотека не предназначена для работы на узле js.

Я понимаю, что admin sdk для firebase предназначен для node js, но вы не можете создать пользователя с определенным провайдером с помощью этого метода (афаик). Также я не уверен, как бы я импортировал его в скрипт приложений Google. Кроме того, я хочу, чтобы пользователь взаимодействовал с селектором учетной записи Google после запуска процесса создания пользователя.

Есть ли у кого-нибудь предложения о том, как это сделать?

Интеграция Angular - Firebase Analytics
Интеграция Angular - Firebase Analytics
Узнайте, как настроить Firebase Analytics и отслеживать поведение пользователей в вашем приложении Angular.
0
0
457
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

На самом деле довольно легко создавать новых пользователей в Firebase из таблицы Google, используя файл REST API аутентификации Firebase.

Вы должны отправить запрос HTTP POST к конечной точке Auth signupNewUser, см. подробный документ здесь: https://firebase.google.com/docs/reference/rest/auth/#section-create-email-password

Для этого вы будете использовать метод fetch() класса URLFetchApp() в своем скрипте gs следующим образом:

function createUser() {

  const userName = "[email protected]";
  const pwd = "xyz987";

  const createUserUrl = "https://www.googleapis.com/identitytoolkit/v3/relyingparty/signupNewUser?key=[API_KEY]" //Replace with your Web API Key

  const payload = JSON.stringify({"email": userName, "password": pwd, "returnSecureToken": true});

  const createUserResponse = UrlFetchApp.fetch(createUserUrl, {
        method: 'post',
        contentType: 'application/json',
        muteHttpExceptions: true,
        payload : payload
 });

 Logger.log(JSON.parse(createUserResponse));

}

Вы получите ключ веб-API для своего проекта Firebase на странице настроек проекта в консоли администратора Firebase.

Интересно, не могли бы вы расширить это, чтобы позволить пользователю создать учетную запись через свою учетную запись Google (поставщик Google Auth)? Если бы я мог заставить это работать через остальные API, то, думаю, я был бы в пути!

rt_ 03.04.2019 22:14

На самом деле это похоже на то, что я хочу - firebase.google.com/docs/reference/rest/auth/… Что-то вроде этого должно работать правильно? curl 'https://www.googleapis.com/identitytoolkit/v3/relyingparty/‌​verifyAssertion?key=‌​[API_KEY]' \ -H 'Content-Type: application/json' \ --data-binary '{"postBody":"id_token=[GOOGLE_ID_TOKEN]&providerId=[google.‌​com]","requestUri":"‌​[http://localhost]",‌​"returnIdpCredential‌​":true,"returnSecure‌​Token":true}'

rt_ 03.04.2019 22:28

@rt_ Не знаю, я никогда не пробовал эту конечную точку. Я мог бы, может быть, посмотреть завтра, мне уже поздно, и я действительно иду спать! Но я уверен, что вы найдете свой путь с документацией.

Renaud Tarnec 03.04.2019 23:20

Хорошо, НП, я близок к тому, чтобы заставить его работать, так что не беспокойтесь. Я использую описанный выше метод с официальной библиотекой OAuth2 скриптов приложений. Спасибо Рено!

rt_ 03.04.2019 23:59

Другие вопросы по теме