我在我的应用程序中使用 firebase auth 并且正在实现其他提供程序,在这种情况下是 microsoft。电子邮件/密码工作正常(应用程序已初始化等)但尝试 signInWithPopup
, 如下所示:
import * as firebaseAuth from 'firebase/auth';
export function signupWithMicrosoft(): Promise<firebaseAuth.UserCredential> {
const auth = firebaseAuth.getAuth();
const provider = new firebaseAuth.OAuthProvider('microsoft.com');
return firebaseAuth.signInWithPopup(auth, provider).catch(Promise.reject);
}
失败与以下不一致:Uncaught (in promise) Error: INTERNAL ASSERTION FAILED: Pending promise was never set
debugFail assert.ts:256
debugAssert assert.ts:271
reject abstract_popup_redirect_operation.ts:135
onAuthEvent abstract_popup_redirect_operation.ts:104
sendToConsumer auth_event_manager.ts:97
onEvent auth_event_manager.ts:68
onEvent auth_event_manager.ts:65
initAndGetManager popup_redirect.ts:133
该错误有时会出现而不是其他错误,但肯定不止于此。我在 Azure 中对重定向 URI 进行了三次检查(最初我遇到了尾部斜杠错误)。我没有尝试过的一件事是重定向登录,而不是弹出登录。尝试观察 firebase 内部发生的事情让我相信这是某种初始化问题,
AuthEventConsumer
在使用设置的事件时没有得到它解决的 promise ,但是我一直在努力寻找如何正确初始化它。实际的身份验证请求通过并成功,但是一旦它尝试解决该 promise (不存在),它就会提示。
最佳答案
编辑:它最终要求我切换到重定向而不是弹出。
事实证明,这是 auth/popup-closed-by-user
的结果。 Firefox 中发生的事情,只是我记录得很差。修复是直接调用函数(从用户输入同步),而不是从异步函数。抱歉,问题中没有明确列出这些因素。
关于javascript - Firebase: "Pending promise was never set"登录时弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70659748/