我正在使用firebase / AngularJS,但我认为这是一个简单的JavaScript对象结构问题。
使用firebase手动登录Facebook,我无法访问signInWithCredential流程中“result”对象内的4个特定属性。
(控制台)记录“结果”对象,确实存在4个变量,我只是无法直接访问它们。
但是,我可以访问该对象的所有其他属性,这会将其变成一个非常奇怪的错误。
以下是代码:
firebase.auth().signInWithCredential(credential).then(function(result){
// $localStorage.firebaseToken = result.providerData.stsTokenManager.accessToken;
var chatUserData = {};
var updates = {};
console.log("result str obj : " + JSON.stringify(result)); // defined
console.log("result str > uid is " + JSON.stringify(result.uid)); // defined
console.log("result str > displayName is " + JSON.stringify(result.displayName)); // defined
console.log("result str > photoURL is " + JSON.stringify(result.photoURL)); // defined
console.log("result str > email is " + JSON.stringify(result.email)); // defined
console.log("result str > emailVerified is " + JSON.stringify(result.emailVerified)); // defined
console.log("result str > isAnonymous is " + JSON.stringify(result.isAnonymous)); // defined
console.log("result str Provider Data " + JSON.stringify(result.providerData)); // array of objects - defined
console.log("result str > apiKey is " + JSON.stringify(result.apiKey)); // gets undefined
console.log("result str > appName is " + JSON.stringify(result.appName)); // gets undefined
console.log("result str > authDomain is " + JSON.stringify(result.authDomain)); // gets undefined
console.log("result str > stsTokenManager is " + JSON.stringify(result.stsTokenManager)); // gets undefined
chatUserData.username = result.displayName;
chatUserData.email = $localStorage.fb_data.data.email;
chatUserData.id = result.uid;
updates['/users/' + result.uid + "/"] = chatUserData;
firebase.database().ref().update(updates);
}).catch(function(error) {
console.log("Error! " + JSON.stringify(error));
});
以下是控制台日志中的目标代码:
这使得这成为一个奇怪的错误,因为我知道对象在那里,并且据说我正在访问它,但它只是没有加载。这通常只是我犯的一个愚蠢的错误,但我似乎无法找到它。
(我在那里的facebook个人资料是假的)
希望你们能帮忙,干杯。
答案 0 :(得分:1)
我修复了这个,原来这是一种firebase管理的对象,正确循环它的方法是使用angular.foreach。即使这样也不是正确的。
我应该使用user.getToken(),我在文档中找到了它。