完成"用户登录"本教程的一部分,我确保检查" http://localhost:5000"看到我的登录功能正常。我做了#34;阅读消息"部分现在我没有看到任何登录信息。
我也没有看到我导入的任何消息...... FriendlyChat.prototype.initFirebase = function(){ // Firebase SDK功能的快捷方式。 this.auth = firebase.auth(); this.database = firebase.database(); this.storage = firebase.storage(); //启动Firebase身份验证并侦听身份验证状态更改。 this.auth.onAuthStateChanged(this.onAuthStateChanged.bind(本)); // TODO(DEVELOPER):初始化Firebase。 };
// Loads chat messages history and listens for upcoming ones.
FriendlyChat.prototype.loadMessages = function() {
// TODO(DEVELOPER): Load and listens for new messages.
// Reference to the /messages/ database path.
this.messagesRef = this.database.ref('messages');
// Make sure we remove all previous listeners.
this.messagesRef.off();
// Loads the last 12 messages and listen for new ones.
var setMessage = function(data) {
var val = data.val();
this.displayMessage(data.key, val.name, val.text, val.photoUrl, val.imageUrl);
}.bind(this);
this.messagesRef.limitToLast(12).on('child_added', setMessage);
this.messagesRef.limitToLast(12).on('child_changed', setMessage);
};
};
// Saves a new message on the Firebase DB.
FriendlyChat.prototype.saveMessage = function(e) {
e.preventDefault();
// Check that the user entered a message and is signed in.
if (this.messageInput.value && this.checkSignedInWithMessage()) {
// TODO(DEVELOPER): push new message to Firebase.
}
};
...
FriendlyChat.prototype.signIn = function() {
// Sign in Firebase using popup auth and Google as the identity provider.
var provider = new firebase.auth.GoogleAuthProvider();
this.auth.signInWithPopup(provider);
// TODO(DEVELOPER): Sign in Firebase with credential from the Google user.
};
// Signs-out of Friendly Chat.
FriendlyChat.prototype.signOut = function() {
// TODO(DEVELOPER): Sign out of Firebase.
// Sign out of Firebase.
this.auth.signOut();
};
riendlyChat.prototype.onAuthStateChanged = function(user) {
if (user) { // User is signed in!
// Get profile pic and user's name from the Firebase user object.
var profilePicUrl = user.photoURL; // TODO(DEVELOPER): Get profile pic.
var userName = user.displayName; // TODO(DEVELOPER): Get user's name.
// Set the user's profile pic and name.
this.userPic.style.backgroundImage = 'url(' + profilePicUrl + ')';
this.userName.textContent = userName;
// Show user's profile and sign-out button.
this.userName.removeAttribute('hidden');
this.userPic.removeAttribute('hidden');
this.signOutButton.removeAttribute('hidden');
// Hide sign-in button.
this.signInButton.setAttribute('hidden', 'true');
// We load currently existing chant messages.
this.loadMessages();
} else { // User is signed out!
// Hide user's profile and sign-out button.
this.userName.setAttribute('hidden', 'true');
this.userPic.setAttribute('hidden', 'true');
this.signOutButton.setAttribute('hidden', 'true');
// Show sign-in button.
this.signInButton.removeAttribute('hidden');
}
};
// Returns true if user is signed-in. Otherwise false and displays a message.
FriendlyChat.prototype.checkSignedInWithMessage = function() {
/* TODO(DEVELOPER): Check if user is signed-in Firebase. */
// Return true if the user is signed in Firebase
if (this.auth.currentUser) {
return true;
}
// Display a message to the user using a Toast.
var data = {
message: 'You must sign-in first',
timeout: 2000
};
this.signInSnackbar.MaterialSnackbar.showSnackbar(data);
return false;
};
这些是我必须改变的功能。我可以做些什么来覆盖我之前正确的登录实现,也无法访问我导入的数据库消息?
答案 0 :(得分:0)
您可以随时根据包含codelab完成的工作代码的web文件夹检查您的代码。
特别是你有这个:
// Sets up shortcuts to Firebase features and initiate firebase auth.
FriendlyChat.prototype.initFirebase = function() {
// Shortcuts to Firebase SDK features.
this.auth = firebase.auth();
this.database = firebase.database();
this.storage = firebase.storage();
// Initiates Firebase auth and listen to auth state changes.
this.auth.onAuthStateChanged(this.onAuthStateChanged.bind(this));
};
那:
// Triggers when the auth state change for instance when the user signs-in or signs-out.
FriendlyChat.prototype.onAuthStateChanged = function(user) {
if (user) { // User is signed in!
// Get profile pic and user's name from the Firebase user object.
var profilePicUrl = user.photoURL;
var userName = user.displayName;
// Set the user's profile pic and name.
this.userPic.style.backgroundImage = 'url(' + (profilePicUrl || '/images/profile_placeholder.png') + ')';
this.userName.textContent = userName;
// Show user's profile and sign-out button.
this.userName.removeAttribute('hidden');
this.userPic.removeAttribute('hidden');
this.signOutButton.removeAttribute('hidden');
// Hide sign-in button.
this.signInButton.setAttribute('hidden', 'true');
// We load currently existing chant messages.
this.loadMessages();
} else { // User is signed out!
// Hide user's profile and sign-out button.
this.userName.setAttribute('hidden', 'true');
this.userPic.setAttribute('hidden', 'true');
this.signOutButton.setAttribute('hidden', 'true');
// Show sign-in button.
this.signInButton.removeAttribute('hidden');
}
};
上述两个功能将确保UI刷新,具体取决于用户登录或注销(因此隐藏/显示"登录"按钮)。
对于您的数据库消息,只有在登录正常后才能显示,所以希望修复上述内容有助于显示您的消息。
答案 1 :(得分:-1)
github 上的讨论可能会有所帮助:https://github.com/firebase/friendlychat/issues/134
如果控制登录相关<div>
和<button>
的隐藏属性的代码无法运行,则登录代码将默认隐藏。