Firebase UI signInSuccessWithAuthResult асинхронный - PullRequest
0 голосов
/ 11 июня 2019

Я пытался использовать асинхронный код в signInSuccessWithAuthResult пользовательского интерфейса Firebase для выполнения условного перенаправления, но он всегда завершается неудачей, соответственно, мой асинхронный код не запускается, а мое перенаправление игнорируется.

Вы можете использовать асинхронный код в 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.

1 Ответ

1 голос
/ 12 июня 2019

Обратный вызов 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;
  },
},
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...