7

Moja aplikacja Firebase/Ionic 2 działa idealnie w przeglądarce (serwoncie jonowe) i na lokalnym urządzeniu z Androidem (jonowym uruchomieniu systemu Android). Aplikacja korzysta z bazy danych Firebase i funkcji auth.Błąd sieci Firebase Auth w aplikacji Ionic 2

Aplikacja działa również doskonale na urządzeniu z systemem iOS.

Jednak po opublikowaniu w Google Play do testów beta na Androida metoda logowania uwierzytelniającego zawsze kończy się niepowodzeniem z błędem: "Wystąpił błąd sieci (taki jak przekroczenie limitu czasu, przerwane połączenie lub nieosiągalny host)." Ale metody bazy danych Firebase działają dobrze. Korzystam tylko z dostawcy poczty e-mail/hasła Firebase.

Czytałem każdy wpis, który mogę znaleźć, który jest podobny do tego problemu i wypróbowałem wszystkie te rozwiązania. Zaktualizowałem do najnowszych wersji wszystkich komponentów.

Wtyczka cordova-plugin-whitelist jest zainstalowana. Jest instalowany domyślnie w nowym projekcie Ionic 2. Rozumiem, że poniższe ustawienia zabezpieczeń nie blokują Firebase.

index.html

<meta http-equiv="Content-Security-Policy" content="font-src * data:; img-src * data:; default-src * 'unsafe-eval' 'unsafe-inline'; script-src * 'unsafe-eval' 'unsafe-inline'"> 

config.xml

<access origin="*"/> 
<allow-intent href="http://*/*"/> 
<allow-intent href="https://*/*"/> 
<allow-navigation href="*"/> 

Moje usługi

public login(email: string, password: string): Observable<any> { 
    return Observable.fromPromise(
     <Promise<any>>firebase.auth().signInWithEmailAndPassword(email, password) 
    ); 
} 

moja forma

this.authService.login(this.loginForm.value.email, this.loginForm.value.password) 
     .subscribe(() => { 
      // Do something! 
     }, error => { 
      // A network error has occurred! 
     }); 

Version Info

Cordova CLI: 6.5.0 
Ionic Framework Version: 2.2.0 
Ionic CLI Version: 2.2.1 
Ionic App Lib Version: 2.2.0 
Ionic App Scripts Version: 1.1.4 
Node Version: v7.2.1 

In package.json: "firebase": "^3.7.1" 
In config.xml: <plugin name="cordova-plugin-whitelist" spec="1.3.1"/> 

Odpowiedz

2

udało mi się obejść ten problem budując lokalnie i określając config zabezpieczeń poniżej.

Pamiętaj, że nie mogę znaleźć odpowiedniej konfiguracji produkcyjnej. Podejrzewam, że brakuje mi domeny na białej liście.

Generowałem plik .apk przy użyciu pliku ionic.io iz jakiegoś powodu generował on problematyczne kompilacje. Dziwne, że wszystko działało, z wyjątkiem uwierzytelniania Firebase.

index.html

<meta http-equiv="Content-Security-Policy" content="default-src * data: gap://ready https://ssl.gstatic.com file://* ws://* wss://*; img-src * data:; font-src * data:; script-src * https://*.google-analytics.com https://*.googleapis.com https://*.firebaseio.com 'unsafe-eval' 'unsafe-inline';"> 

Uwaga wykorzystanie default-src * i script-src *. Zmień jeden z tych na "własny" powoduje błędy.

config.xml

<access origin="*"/> 
    <access origin="https://*.google-analytics.com"/> 
    <access origin="https://*.googleapis.com"/> 
    <access origin="https://*.firebaseio.com"/> 
    <allow-navigation href="*"/> 
    <allow-navigation href="http://ionic.local/*"/> 
    <allow-intent href="http://*/*"/> 
    <allow-intent href="https://*/*"/> 
    <allow-intent href="tel:*"/> 
    <allow-intent href="sms:*"/> 
    <allow-intent href="mailto:*"/> 
    <allow-intent href="geo:*"/> 

Uwaga wykorzystanie <access origin="*"/>. Usunięcie tej linii powoduje błędy.

Co ciekawe, usunięcie linii i budynku z lokacji <access origin="*"/> powoduje ten sam błąd, co przy budowaniu przy pomocy ionic.io.

+0

Twój problem może być gdzie indziej (nie związany z kodem), możesz sprawdzić podsekcję "Metoda logowania" w sekcji "Auth" – user1928596