[英]nil is not defined while checking if user is logged in
我想使用Firebase來檢測用戶是否已登錄:
var auth = new FirebaseSimpleLogin(Ref, function(err, user){
if(err){
console.log(err);
}else if(user){
console.log("User ID:" + user.id + ", Email: " + user.email);
}else if(user == nil){
console.log("No user logged in");
}else{
login();
}
});
但它給了我這個錯誤:
nil沒有定義
當用戶沒有登錄時。任何解釋以及如何解決這個問題?
您需要使用getAuth()方法並執行以下操作:
var user = ref.getAuth();
Firebase將返回一個對象,然后您可以執行以下操作以查看用戶是否已登錄登錄:
if (user==null) {
//user not logged in
};
JavaScript中沒有nil
關鍵字,但有null
和undefined
。 從Firebase簡單登錄文檔中嘗試這種方法:
var auth = new FirebaseSimpleLogin(ref, function(error, user) {
if (error) {
// an error occurred while attempting login
console.log(error);
} else if (user) {
// user authenticated with Firebase
console.log('User ID: ' + user.id + ', Provider: ' + user.provider);
} else {
// user is logged out
}
});
對於Swift試試這個,
let FIREBASE_REF = Firebase(url: "FirebaseURL")
if let _ = FIREBASE_REF.authData{
//Use logged in
}else{
//Use not logged in
}
實例化新的FirebaseSimpleLogin對象時,它可能包含“user”屬性。
如果定義了此屬性,則它應包含用戶信息,因此指示用戶的登錄狀態。
在用戶登錄之前,user屬性為null。
以下示例顯示了一個簡單的函數,如果用戶已登錄則返回布爾值true,否則返回false。
var ref = new Firebase('https://YOUR-FIREBASE-URL.firebaseio.com/');
var auth = new FirebaseSimpleLogin(ref, function(error, user) {
if (error) {
// Handle error
}
else if (user) {
// Do something with logged in user information
}
});
function loggedIn() {
return auth.user !== null;
};
如您所見,如果定義了auth.user,則只調用loggedIn()將返回true。
如果要檢查是否沒有用戶登錄,可以創建與上述相反的功能。 像這樣。
function noUserloggedIn() {
return auth.user == null;
};
如果未定義auth.user,則上述函數將返回true,即auth.user == null,表示沒有任何已登錄的用戶。
並且為了完整性,並且如其他評論/答案中所述,您需要替換
nil
同
null
因為javascript中不存在nil關鍵字。
更新的代碼 - 我剛剛更新了我的代碼以反映David的注釋,構造函數確實需要回調,我的原始代碼是使用$ firebaseAuth從angularFire轉換而來的,它將ref作為參數並返回了我相信的承諾。 它不需要回調,因此我將其刪除:),但是每次用戶身份驗證狀態發生變化時都會觸發此回調。
來自github文檔:
要初始化簡單登錄,我們需要創建一個FirebaseSimpleLogin對象。 此對象包含Firebase引用和回調函數。 只要用戶的身份驗證狀態發生更改,就會觸發回調。
資料來源: https : //github.com/firebase/firebase-simple-login/tree/master/docs/v1/
但是現在已經棄用了上述內容,因為Firebase登錄現在與FireBase核心捆綁在一起。 有關詳細信息,請訪問https://www.firebase.com/docs/web/api/firebasesimplelogin/ 。
此答案也使Firebase取得了很大進展。 我建議在這里查看新的API https://www.firebase.com/docs/
這也應該有效。
signedIn: function(){
return !!Auth.user.provider;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.