我正在尝试从多个页面访问firebase身份验证用户。我试过1.html,2.html和code.js. 1.HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title></title>
<script src="https://www.gstatic.com/firebasejs/4.10.0/firebase.js"></script>
</head>
<body>
<input type="email" id="email">
<input type="password" id="password">
<button onclick="sign()">Yo</button>
</body>
<script src="code.js"></script>
</html>
2.HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title></title>
<script src="https://www.gstatic.com/firebasejs/4.10.0/firebase.js"></script>
</head>
<body>
<p id="p" onload="runIt()">TEST</p>
</body>
<script src="code.js"></script>
</html>
CODE.JS
var config = {
apiKey: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
authDomain: "xxxxxxxxxxxxxxxxxxxxxxxxx.com",
databaseURL: "https://xxxxxxxxxxxxxxxxxxxxxx.com",
projectId: "xxxxxxxxxxxxxxxxxxxx",
storageBucket: "xxxxxxxxxxxxxxxx.appspot.com",
messagingSenderId: "xxxxxxxxxxx"
};
firebase.initializeApp(config);
function sign() {
var email = document.getElementById('email').value;
var password = document.getElementById('password').value;
firebase.auth().signInWithEmailAndPassword(email, password).then(function() {
window.location = "2.html";
});
}
function runIt() {
console.log(firebase.auth().currentUser.uid);
}
我如何能够在控制台中从第二页登录用户的uid?谢谢!
答案 0 :(得分:0)
你试试:
var user = firebase.auth().currentUser;
if (user != null) {
uid = user.uid;
}
答案 1 :(得分:0)
在用户签名之前,它被称为该功能。你必须给它一秒钟。你可以写:
function initApp() {
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
// User is signed in.
console.log(firebase.auth().currentUser.uid);
}
});
}
然后,它会在auth状态发生变化或用户登录后记录uid。
答案 2 :(得分:0)
您正在从同一域/ ipaddr提供的两个页面上加载共享Firebase JavaScript SDK和firebase配置文件。授权令牌已授予并按配置保留。每个新页面加载都会导致状态更改.firebase.auth().onAuthStateChanged
Authentication State Persistence
您可以指定使用时身份验证状态的持续状态 Firebase JS SDK。这包括指定是否签名的能力 用户应该无限期地持续到明确退出, 窗口关闭或页面重新加载时清除。
Expected behavior across browser tabs
当不同的持久性时,将应用以下预期行为 类型用于不同的选项卡。要求是任何 一点,永远不应该有多种类型的保存状态 同一时间(例如,在会话中保存的身份验证状态和本地类型的 存储):
- 用户可以在多个标签上使用不同用户的会话或非持久性登录。每个标签都看不到对方的状态 标签。
- 将在所有选项卡上检测并同步任何使用本地持久性登录的尝试。如果用户之前已登录过 使用会话或无持久性的特定选项卡,该状态将是 清零。
- 如果用户以前使用打开了多个选项卡的本地持久性登录,则切换为none或会话持久性 在一个选项卡中,该选项卡的状态将与用户一起修改 持久存在会话或无,并且在所有其他选项卡上,用户将是 退出了。