繁体   English   中英

无法(仅)访问对象的某些属性(JavaScript)

[英]Can't access (only) some of an object's properties (JavaScript)

我正在使用firebase / AngularJS,但我认为这是一个普通的JavaScript对象结构问题。

使用firebase手动登录Facebook,我无法从signInWithCredential进程访问“结果”对象内的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));
     });

这是控制台日志中的目标代码:

result_object

这使它成为一个怪异的错误,因为我知道对象在那里,并且据称我正在正确地访问它,但是它没有加载。 这通常只是我犯的一个愚蠢的错误,但我似乎找不到它。

(我的Facebook资料是假的)

希望你们能提供帮助,干杯。

我修复了这个问题,原来这是一种由Firebase管理的对象,正确循环通过它的方法是使用angular.foreach。 甚至那样的方法也不正确。

我应该使用过user.getToken(),并且在文档中找到了它。

Firebase用户获取令牌

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM