我正在关注example in the docs:
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)
来自firebase-debug.js:
$( '.dropdown' ).on( 'change', function( e ){
document.location.href = "localhost:8080/test/testing.html?par1=" + "&par2=" + $( this ).val() + "seconddropdownvalue";
});
可能发生的事情:
您传递了一个非字符串值if (!goog.isString(cred)) {
throw new Error(fb.util.validation.errorPrefix(fnName, argumentNumber, optional) + "must be a valid credential (a string).");
}
,因此错误没有发生在Firebase(服务器)端,它发生在客户端(您的身边),所以它不会在回调函数上报告,而是作为Javascript异常在你的代码中。
可能的解决方法(我不知道为什么,但如果你愿意的话)
如果要将变量作为authToken
传递并且它不能是字符串,并且您仍然希望获得“错误的凭据”错误,而不是类型验证,那么您需要使用以下方法强制进行字符串转换: p>
authToken
但这对我来说没有意义。 :)