2016-09-28 4 views
0

Ich verwende PhoneGap, um eine plattformübergreifende App für Android und iOS zu entwickeln. Der Zugriff auf auth() und die Authentifizierung von Benutzern funktioniert auf beiden Plattformen korrekt, was ich in der Firebase-Konsole überprüfen kann.iOS 10, Firebase und PhoneGap - SSL-Fehler erhalten

Der Zugriff auf die Datenbank funktioniert jedoch nur in Android. Wenn ich den gleichen Code in iOS laufen, es gibt mir:

"Failed to load resource: An SSL error has occurred and a secure connection to the server cannot be made." 

Mein CSP firebaseio.com und seine Sub-Domains umfasst, wie die config.xml tut. Ich kann auch überprüfen, ob der ATS in Xcode aktiviert ist, und er wird ordnungsgemäß generiert, wenn ich die PhoneGap App im Simulator ausführen lasse.

Weise Codebeispiel:

var adminRef = firebase.database().ref('/admin/'); 
    console.log('here'); 
    console.log(adminRef); 
    adminRef.on('value', function(snapshot) { 
     //do stuff with the result... 
} 

führt den SSL-Fehler. Selbst das Deaktivieren der APP-Transportsicherheit in der Konfiguration (und somit im plist) lässt die Verbindung nicht durch.

Fehle ich etwas? Alles ist auf dem neuesten Stand.

Antwort

1

Ok, ich habe es herausgefunden. Um auf die Firebase-Datenbank in ios 10 zugreifen zu können, müssen Sie die Forward Secrecy deaktivieren.

In nur den plist bedeutet dies:

<key>firebaseio.com</key> 
    <dict> 
     <key>NSIncludesSubdomains</key> 
     <true/> 
     <key>NSExceptionRequiresForwardSecrecy</key> 
     <false/> 
    </dict> 

Oder in Cordova/phonegap, können Sie es in config.xml deaktivieren:

<access origin="https://*.firebaseio.com" subdomains="true" requires-forward-secrecy="false"/> 

In meinem Fall, ich begann dann eine immer Fehler bei einem Websocket-Anruf, der nicht in meinem CSP enthalten war. Es war, aber es hat nicht funktioniert. In meinem config.xml, musste ich auch noch hinzufügen:

<access origin="wss://*.firebaseio.com" subdomains="true"/> 

Jetzt ist alles in config.xml-Datei in Ordnung ist und Werke zu bauen. Hoffe, dass dies jemand anderem Kopfschmerzen erspart.