我正在尝试升级我的 firebase GAS Web 应用程序,之前我有一个弹出窗口,可以让用户使用 Google 登录。我不确定我做错了什么,但我已经升级到新的 firebase,现在正在尝试使用新的代码格式获得相同的登录信息。
发生的情况是,弹出窗口出现并立即消失。谁能看到我在这里做错了什么吗?
谢谢你的帮助。
<html lang="en">
<head>
<script src="https://www.gstatic.com/firebasejs/3.1.0/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/3.1.0/firebase-auth.js"></script>
<script src="https://www.gstatic.com/firebasejs/3.1.0/firebase-database.js"></script>
<script>
var config = {
apiKey: "",
authDomain: "",
databaseURL: "",
storageBucket: ""
};
firebase.initializeApp(config);
</script>
</head>
<body>
<label id="name">First Name</label>
<script>
var provider = new firebase.auth.GoogleAuthProvider();
firebase.auth().signInWithPopup(provider).then(function(result) {
var user = result.user;
document.getElementById("name").value = user;
}).catch(function(error) {
console.log(error);
});
</script>
</body>
</html>
问题解决了。我认识了 Firebase 的优秀员工,Dane 和我一起完成了这一切,直到成功为止。我的代码没问题,问题出在凭据上。如果您遇到同样的问题,我们经历过的所有步骤都是:
谷歌配置
添加您在测试页面时访问的完整网址,或者确保添加更通用的网址,例如 https://script.google.com/*
单击 oAuth Web 应用程序
对于授权重定向 URI,请添加 .firebaseapp.com/__/auth/handler
点击“Web 客户端(由 Google 服务自动创建)”
Firebase 配置
如果没有,请单击“添加域”,输入您的自定义域,然后单击“添加”
打开 Google Chrome 并转到部署您的应用的页面。
这是我发现在 Apps 脚本中进行客户端身份验证所需的最低限度。我创建了一个新的 firebase 项目。我启用了 Google 登录提供商。我将 web 应用程序的来源添加到 OAuth 重定向域列表中。 我通过启动网络应用程序并查看开发工具检查器来得到这个。在 elements 选项卡下,它将是顶级 iframe 的 src。它看起来像:
n-rn4a4ioahvqauYhvzh2nktp3vxnuap6y7htmacq-0lu-script.googleusercontent.com
代码.gs
function doGet() {
return HtmlService.createHtmlOutputFromFile('index')
}
index.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
</body>
<script src="https://www.gstatic.com/firebasejs/3.2.0/firebase.js"></script>
<script>
// Initialize Firebase
var config = {
apiKey: "AIzaSyADzG0boXmVUJb07K5NbCC0c6SrP8x3Msk",
authDomain: "testclientauth-57c09.firebaseapp.com",
databaseURL: "https://testclientauth-57c09.firebaseio.com",
storageBucket: "testclientauth-57c09.appspot.com",
};
firebase.initializeApp(config);
</script>
<script>
var provider = new firebase.auth.GoogleAuthProvider();
provider.addScope('https://www.googleapis.com/auth/plus.login');
firebase.auth().signInWithPopup(provider).then(function(result) {
var token = result.credential.accessToken;
var user = result.user;
console.log(user)
}).catch(function(error) {
var errorCode = error.code;
var errorMessage = error.message;
var email = error.email;
var credential = error.credential;
});
</script>
</html>