2016-06-21 5 views
5

Я пытаюсь получить токен моего подписанного в настоящее время пользователя моего сайта. Однако javascript не может получить значение для меня. Я думаю, что есть 2 проблемы здесь:Firebase getToken() TypeError: Не удается прочитать свойство

  1. Когда я получаю Auth.currentUser при запуске, я получаю эту ошибку «TypeError: Не удается прочитать свойство„getToken“нуль». Но когда я набираю Auth.currentUser.getToken() в консоли, на самом деле появляется объект с токеном.

  2. То, что возвращает getToken(), является объектом обещания с его ключом «ea», содержащим значение токена. но когда я делаю Auth.currentUser.getToken(). ea, он получает меня «null». Как я могу получить токен непосредственно из объекта?

Спасибо!

Мой код получения маркера:

var Auth = firebase.auth() 
var token = Auth.currentUser.getToken() 

Этот снимок экрана может быть полезно: Chrome console result

ответ

13

В соответствии с documentation of firebase.User:getIdToken():

Returns a JWT token used to identify the user to a Firebase service.

Returns the current token if it has not expired, otherwise this will refresh the token and return a new one.

Метод возвращает обещание, поскольку оно может потребовать обратного прохода к серверам Firebase в случае, если токен истек:

Auth.currentUser.getIdToken().then(data => console.log(data)) 

Или более классический JavaScript: выходной

Auth.currentUser.getIdToken().then(function(data) { 
    console.log(data) 
}); 

Вход:

ey...biPA

Update: чтобы убедиться, что пользователь подписывается в перед тем, как маркер, запустить выше код в onAuthStateChanged listener:

firebase.auth().onAuthStateChanged(function(user) { 
    if (user) { 
    user.getIdToken().then(function(data) { 
     console.log(data) 
    }); 
    } 
}); 
+0

Я пробовал, тот же результат ... – thousight

+0

Хотя этот способ делать непосредственно получает мне маркер строки, она по-прежнему не решает проблема с TypeError. Но очень благодарен за ваш ответ, это помогает. – thousight

+0

Это означает, что нет текущего пользователя, т. Е. Вы еще не вошли. –

1

Вот пример того, как получить токен с помощью NodeJS

var firebase = require('firebase') 
firebase.initializeApp({ 
    apiKey:********* 
    databaseURL:********* 
}) 

var customToken = *********  
firebase.auth().signInWithCustomToken(customToken).catch(function(error) { 
    var errorMessage = error.message 
    console.log(errorMessage) 
}) 

firebase.auth().onAuthStateChanged(function(user) { 
    if (user) { 
     firebase.auth().currentUser.getToken().then(data => console.log(data)) 
    } else { 
     console.log('onAuthStateChanged else') 
    } 
}) 
Смежные вопросы