javascript - SignInWithEmailAndPassword (Ionic/Vue/Firebase) 无法解决 iOS 中的 promise

标签 javascript ios vue.js ionic-framework firebase-authentication

我已经在这个问题上苦苦挣扎了一段时间了,我终于放弃寻找答案,决定问自己的问题。

我有一个 Ionic 7 Vue 应用,我在其中使用 Firebase Auth 进行用户管理。我的代码在浏览器和 Android 上完美运行,并且我可以成功登录用户。但是在 iOS 设备或模拟器上它不起作用。

当用户登录时,我会触发以下函数(请注意,auth 对象是有效的,只是未在此处显示):

import {signInWithEmailAndPassword, UserCredential } from "firebase/auth";
const signInUser = async (email: string, password: string) => {
    try{
        const res = await signInWithEmailAndPassword(auth, email, password)
        console.log("Successfully logged in with Firebase, UID: "+res.user.uid)
    }        
    catch(error){
        const errorCode = error.code;
        const errorMessage = error.message;

        console.error("Error Code: " + errorCode + " - Error Message: " + errorMessage);
    }
}

错误条件成功触发,console.log 显示正确的错误。例如,如果我输入了错误的密码,它会在 console.logs 中记录一条消息。

但是,如果我输入正确的密码和电子邮件,try block 中的 console.log 将永远不会执行。它只是卡在那里,什么都不做,就好像等待的 promise 永远不会解决一样。我也看不到 Xcode 输出中抛出任何错误。

一个有趣的注释是,在 Firebase 控制台中,它显示登录确实发生了。这一切都向我表明它实际上正在工作,但不知何故我没有以某种方式正确处理已解决的 promise 。

我希望我只是在一些琐碎的事情上犯了傻,并且这里有人会指出一些错字或其他东西。或者有人知道解决此问题的一些方法。

最佳答案

理想情况下,此代码应该可以正常工作,因为您发布的代码与浏览器或设备无关。但我可以建议一个解决方法来尝试一下,您可以尝试使用 promise 而不是 async/await 来查看问题是否仍然存在。

通过执行此操作,您将了解问题是否具体与 async/await 行为有关。

const signInUser = (email: string, password: string) => {
  signInWithEmailAndPassword(auth, email, password)
    .then(res => {
        console.log("Successfully logged in with Firebase, UID: "+res.user.uid)
    })
    .catch(error => {
        console.error("Error Code: " + error.code + " - Error Message: " + error.message);
    })
}

如果上述方法不起作用,请检查 iOS 上是否应用了任何安全措施来执行 Firebase 身份验证,方法是查看您的设备是否具有必要的网络访问权限。

关于javascript - SignInWithEmailAndPassword (Ionic/Vue/Firebase) 无法解决 iOS 中的 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76855485/

相关文章:

javascript - 如何检查复选框是否被选中?

ios - UILabel 中的 NSAttributedString 是否会忽略标签的 numberOfLines 属性?

ios - 单点触控/iOS : which place is the best one to unsubscribe the delegate

javascript - 通过动态更改的变量键访问对象键

javascript - "push"不是函数 [在 getElementsByTagName 返回的元素上]

javascript - 书中的示例之一 "Javascript - The Definitive Guide"不起作用

ios - 不使用 HTML 将本地镜像直接加载到 UIWebView 中?

javascript - Vue 资源 - plugin.apply 不是函数

json - vuejs 应用程序中无法检测到的内存泄漏

javascript - 我可以在 Node.js 中以原型(prototype)方式使用 require() 吗?