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

Android设备上带有模拟器的Ionic/Angular+Firebase=身份验证/网络请求失败

  •  0
  • CodeBy  · 技术社区  · 4 年前

    我必须使用firebase作为用户登录的身份验证方法来改进现有的Ionic应用程序。 出于我的目的,我无法触摸生产firebase应用程序中以前注册的用户的现有列表,我必须使用firebase模拟器在本地创建新列表。 添加并设置本地身份验证后;DB模拟器扩展,我已将其添加到 app.module.ts :

    if (window.location.hostname === 'localhost') {
      firebase.auth().useEmulator('http://localhost:9099');
    }
    

    在继续添加新的UI和逻辑功能,使用web浏览器测试我的工作后,我切换到Android平台。运行应用程序并执行后

    firebase.auth().signInWithEmailAndPassword(email, password);
    

    我收到以下错误:

    {
     "code": "auth/network-request-failed",
     "message": "A network error (such as timeout, interrupted connection, or unreachable host) has occurred."
    }
    

    它在浏览器中运行良好,但在真实设备上运行不佳。

    1 回复  |  直到 4 年前
        1
  •  0
  •   CodeBy    4 年前

    而在Android设备上

    window.location.hostname === 'localhost

    这将被执行

    firebase.auth().useEmulator('http://localhost:9099');

    因此,Firebase在端口9099上的设备上搜索不存在的身份验证服务,并产生此类错误。

    要解决这个问题,只需在终端中运行

    adb reverse tcp:9099 tcp:9099