我看到了这个错误:
错误:此环境不支持此操作 应用程序正在运行。 " location.protocol"必须是http,https或 必须启用chrome-extension和web存储。
当我使用时:
firebase.auth().signInWithPopup(provider)
.then(function(result) {
console.log(result);
})
.catch(function(error) {
console.log('popup', error);
//webSettings.setDomStorageEnabled(true);
firebase.auth().signInWithRedirect(provider)
.then(function(result) {
console.log(result);
})
.catch(function(error) {
console.log('redirect', error);
firebase.auth().signInAnonymously().catch(function(error) {
console.log('anonymous', error);
});
});
});
通过弹出和重定向的前两次登录尝试失败。它似乎只发生在iOS Safari上。
我看到其他人报告了Cordova的问题,但我没有看到答案,我只使用网络和firebase。不是科尔多瓦或离子等。
匿名登录适用于iOS,但这只是一个测试,而不是我们想要使用的。
如果您想测试它,可以使用iOS上Safari的https://meetup-reporter.firebaseapp.com/
返回的Promise中错误对象的示例转储是:
{" code":" auth / operation-not-supported-in-this-environment", "构造函数":函数(a,b) {this.code =" auth /" + a; this.message = b || Xf [a] ||"&#34 ;;}," F" :function() {return {code:this.code,message:this.message}}," line":44," message": "此应用程序的环境不支持此操作 正在运行。 \" location.protocol \"必须是http,https或 必须启用chrome-extension和web存储。"," sourceURL": " https://meetup-reporter.firebaseapp.com//firebase/4.1.2/firebase-auth.js的&#34 ;, "堆栈&#34 ;: " https://meetup-reporter.firebaseapp.com/ /firebase/4.1.2/firebase-auth.js:44:638 \ nhttps://meetup-reporter.firebaseapp.com/的 /firebase/4.1.2/firebase-auth.js:45:258 \钠@ https://meetup-reporter.firebaseapp.com/ /firebase/4.1.2/firebase-auth.js:44:545 \ ND @ https://meetup-reporter.firebaseapp.com//firebase/4.1.2/firebase-auth.js:45:242的 \ nsignInWithPopup @ https://meetup-reporter.firebaseapp.com/ /firebase/4.1.2/firebase-auth.js:241:48 \呐@ {{ 3}} \ nhttps://meetup-reporter.firebaseapp.com/scripts/main.js:430:36&#34 ;, " toJSON":function(){var 一个= Array.prototype.slice.call(参数); A:{风险 e = Array.prototype.slice.call(a); var l = 0; for(var n =!1,C = 0; Cl || l> = fk.length)抛出新的N("内部错误","参数 验证器收到的参数数量不受支持。"); e = fk [l] +" 参数" +(e.name?'"' + e.name+'"':"") +"必须是" + e.N +"。&#34 ;;休息 a} e = null}}如果(e)抛出新的N("参数错误",d +"失败:" + e);返回 b.apply(这一点,一个);}}
答案 0 :(得分:0)
signInWithRedirect现在在Cordova中有效:https://firebase.google.com/docs/auth/web/cordova signInWithPopup和signInWithRedirect也适用于iOS7及以上版本。我刚刚在iOS 7设备上进行了测试,但两者都有效。您遇到的可能是您在禁用Web存储的Safari专用/隐身模式下使用此操作。这些操作依赖于Web存储,以便将OAuth结果安全地传递到父页面。当发生这种情况时,您需要让用户切换到常规模式,或者您可以使用Google登录JS SDk获取OAuth凭据,然后使用signInWithCredential。我认为它可能会以隐身模式运行。