代码之家  ›  专栏  ›  技术社区  ›  surya

访问对象的值时获取未定义的值

  •  0
  • surya  · 技术社区  · 6 年前

    在loginuser函数中,我想访问accesstoken的值,它位于“ststokenmanager”旁边,但是当我试图访问这个值时,我得到的是“undefind”值。

    import React, { Component } from 'react';
    import {
    StyleSheet,
    Text, 
    View,
    Image,
    Button,
    TouchableWithoutFeedback, StatusBar, TextInput,
    SafeAreaView, Keyboard, TouchableOpacity,
    KeyboardAvoidingView
    } from 'react-native';
    import { CheckBox, Item, Label, Input } from 'native-base';
    import * as firebase from 'firebase';
    
    const firebaseconfig={
    apiKey: " ",
    authDomain: " ",
    databaseURL: " ",
    projectId: " ",
    storageBucket: " ",
    messagingSenderId: ""
    };
    firebase.initializeApp(firebaseconfig);
    
    export default class Login extends Component{
    // static navigationOptions = {
    //     header: null
    // }
    
    componentDidMount() {
        firebase.auth().onAuthStateChanged((user) => {
          if (user != null) {
            console.log(user)
          }
        })
    }
    loginUser = (email, password) => {         
        try {        
          firebase.auth().signInWithEmailAndPassword(email, password )
          .then((response)=>{
            //here i want to access values of 'stsTokenManager'
            console.log(response.user.stsTokenManager);
            }
        }
        catch (error) {
          alert('Check your email or password')
        }
    }
    

    请检查我的登录用户功能,因为我可以访问电子邮件和其他想法,但当我试图访问ststokenmanager时,我得到了未定义的值。而且,我正在使用firebase身份验证。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Renaud Tarnec    6 年前

    response.user 没有 stsTokenManager 财产。

    事实上,根据 documentation signInWithEmailAndPassword(email, password) 返回 firebase.Promise 包含非空 firebase.auth.UserCredential .

    反过来, UserCredential 包含 firebase.User (你能通过 响应.用户 就像你所做的那样 StstokenManager公司 属性,请参见 https://firebase.google.com/docs/reference/js/firebase.User

        2
  •  0
  •   bojeil    6 年前

    不要依赖可能更改的内部未记录属性。而是使用已经可用的公共和官方api。在你的情况下,你可以使用 response.user.getIdToken() 要获取用户的id令牌,这还可以确保在缓存的令牌过期时获取的令牌是新鲜的。