首页 > 解决方案 > Firebase UI signInSuccessWithAuthResult 异步

问题描述

我尝试在signInSuccessWithAuthResultFirebase UI 中使用异步代码来执行条件重定向,但它总是分别失败,我的异步代码没有运行并且我的重定向被忽略。

你能在中使用异步代码signInSuccessWithAuthResult吗?还是我做错了什么?

const uiConfig = {
            signInFlow: 'redirect',
            signInSuccessUrl: appUrl,
            signInOptions: signInOptions,
            tosUrl: appUrl + '/terms',
            privacyPolicyUrl: appUrl + '/privacy',
            credentialHelper: firebaseui.auth.CredentialHelper.GOOGLE_YOLO,
            autoUpgradeAnonymousUsers: true,
            callbacks: {
                signInSuccessWithAuthResult: async (_authResult, _redirectUrl) => {
                    await this.navigateRedirect();

                    return false;
                },
                signInFailure: this.onSignInFailure
            }
        };

private async navigateRedirect() {
     const redirectUrl: string = await get<string>('deckdeckgo_redirect');

    window.location.assign(redirectUrl);
}

我使用firebaseui v4.0.0。和上面get用到的idb-keyval

标签: javascriptfirebasefirebase-authenticationfirebaseui

解决方案


signInSuccessWithAuthResult回调需要一个同步函数。更改为以下内容:

callbacks: {
  signInSuccessWithAuthResult: (_authResult, _redirectUrl) => {
    // This will run asynchronously. When it resolves, it will complete the
    // redirect.
    this.navigateRedirect();
    // In the meantime, disable FirebaseUI redirect.
    return false;
  },
},

推荐阅读