Firebase authWithCustomToken抛出错误而不是调用回调?

时间:2015-07-09 13:03:54

标签: firebase firebase-authentication

我正在关注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传递,因此未定义的参数是可能的错误条件。

1 个答案:

答案 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

但这对我来说没有意义。 :)