2015-07-09 2 views
0

Я следую example in the docs:Firebase authWithCustomToken выдает ошибку вместо вызова обратного вызова?

ref.authWithCustomToken(authToken, function(error, authData) { 
    if (error) { 
    console.log("Authentication Failed!", error); 
    } else { 
    console.log("Authenticated successfully with payload:", authData); 
    } 
}); 

Если я прохожу недопустимый маркер authWithCustomToken (например, authToken не определено), он выдает ошибку, а не передавая код ошибки обратного вызова. Другими словами, ни console.log выполняется, но отбрасывается эта ошибка:

First argument must be a valid credential (a string).

Подведем в try catch решает эту проблему достаточно легко, но я не видел ни одного упоминания в документации. Это намеренное поведение?

В моем случае использования токен передается через URL-адрес, поэтому неопределенный параметр является возможным условием ошибки.

+0

Какая ошибка возникает? –

+0

@Rob 'Первый аргумент должен иметь действительные учетные данные (строка) .' – kpg

+0

Показать код. Как мы должны видеть, как выглядит ваш код, и помогать вам, если вы ничего не предоставляете? – Chrillewoodz

ответ

0

От firebase-debug.js:

if (!goog.isString(cred)) { 
    throw new Error(fb.util.validation.errorPrefix(fnName, argumentNumber, optional) + "must be a valid credential (a string)."); 
} 

Что, вероятно, произошло:
Вы прошли значение не-строковый authToken поэтому ошибка не произошло в (сервера) стороны Firebase, это произошло на стороне клиента (ваша сторона), поэтому он не будет сообщаться о функции обратного вызова, а как исключение Javascript в вашем коде.

Возможно временное решение (я не знаю, почему, но если вы хотите)
Если вы хотите передать переменную как authToken и она не может быть строкой, и вы все еще хотите получить «неправильные учетные данные "ошибка, вместо проверки типа, то вам необходимо заставить преобразование строки с помощью:

var ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com"); 
var numberAuthToken = 212312312312312; // number 
var stringAuthToken = String(numberAuthToken); 
ref.authWithCustomToken(stringAuthToken, function(error, authData) { 
    if (error) { 
    console.log("Authentication Failed!", error); 
    } else { 
    console.log("Authenticated successfully with payload:", authData); 
    } 
}); 

Но это не имеет смысла для меня. :)

Смежные вопросы