2016-09-28 24 views
0

我使用PhoneGap为Android和iOS开发跨平台应用程序。访问auth()并且验证用户可以在两个平台上正常工作,我可以在Firebase控制台中验证这些平台。iOS 10,Firebase和PhoneGap - 获取SSL错误

但是,访问数据库仅适用于Android。当我运行在iOS中相同的代码,它给了我:

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

我CSP包括firebaseio.com及其子域,一样的​​3210。我还可以验证Xcode中的ATS是否已启用,并且在模拟器中运行PhoneGap应用程序时它会正确生成。

通过代码举例:

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

抛出的SSL错误。即使在配置中禁用APP传输安全性(因此也不允许连接通过)。

我错过了什么吗?一切都是最新的。

回答

1

好吧,我想通了。在ios 10中访问Firebase数据库需要禁用前向保密。

在刚刚plist中,这意味着:

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

或者在科尔多瓦/ PhoneGap的,你可以在config.xml中禁用它:

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

就我而言,我然后开始得到一个关于不在我的CSP中的websocket调用的错误。它是,但它不工作。在我的config.xml中,我还必须添加:

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

现在在config.xml文件和构建工作中一切正常。 希望这可以节省别人的头痛。