如何将Firebase导入Go​​ogle Apps脚本,以便使用Google提供者创建用户?

时间:2019-04-03 18:14:40

标签: firebase google-apps-script firebase-authentication

我正在尝试通过Google身份验证提供程序自动或通过在Google表格的边栏插件中单击按钮来在Firebase中创建新用户。原因是我需要为该用户获取一个注册的uid,以便我从工作表发送的数据可以归因于该用户。

我找到的最接近本教程的内容是this,但是在尝试导入Firebase时遇到问题。

我看到很多方法是通过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>

但是,当我尝试在.gs脚本中使用firebase变量时,该变量是未定义的。我如何使它可用于脚本?

我见过的另一种方法是在gs脚本中使用evalURLFetchApp

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

这导致SyntaxError: Missing name after . operator. 我认为这是因为该库并非旨在在节点js上运行。

我意识到,firebase的admin sdk适用于节点js,但是您无法使用此方法(afaik)创建具有特定提供程序的用户。另外,我不确定如何将其导入到Google Apps脚本中。另外,我希望用户在启动创建用户流程后与Google帐户选择器进行交互。

有人对如何完成这项工作有任何建议吗?

1 个答案:

答案 0 :(得分:1)

实际上,使用Firebase Auth REST API通过Google Sheet在Firebase中创建新用户非常容易。

您必须向Auth POST端点发出HTTP signupNewUser请求,请在此处查看详细文档:https://firebase.google.com/docs/reference/rest/auth/#section-create-email-password

为此,您将在gs脚本中使用URLFetchApp()类的fetch()方法,如下所示:

function createUser() {

  const userName = "john.doe@gmail.com";
  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));

}

您将通过Firebase管理控制台中的“项目设置”页面获取Firebase项目的Web API密钥。