我正在尝试通过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脚本中使用eval
和URLFetchApp
。
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帐户选择器进行交互。
有人对如何完成这项工作有任何建议吗?
答案 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密钥。