Estoy tratando de usar aws amplificar para implementar la funcionalidad de inicio de sesión en una aplicación angular.
Cuando hago clic en el botón "Iniciar sesión con Google", me lleva a la página de inicio de sesión de Google y me devuelve a mi página de inicio cuando proporciono credenciales de Google válidas.
En mi authService, estoy escuchando el evento 'auth' . Entonces, cuando un usuario inicia sesión, el asunto "isLoggedInSub" emite un valor "verdadero". Estoy tratando de mostrar el valor del observable "isLoggedIn$" que está hecho de este tema. Pero siempre muestra falso. Como puede ver en mi página html, estoy usando una canalización asíncrona para mostrar el valor. ¿Por qué no se muestra el valor verdadero?
Cuando depuro este flujo en particular descrito anteriormente, veo que golpea el código donde el sujeto emite verdadero. es decir this.isLoggedInSub.next(true);
logincomponent.html
<button (click) ="signInWithGoogle()" type="button" class="btn btn-outline-primary">Login with Google</button> <span>is loggedin: {{this.authService.isLoggedIn$ | async}}</span>loginComponent.ts
async signInWithGoogle() { await this.authService.socialSignIn(AuthService.GOOGLE); }auth.service.ts
private isLoggedInSub = new BehaviorSubject<boolean>(false); isLoggedIn$ = this.isLoggedInSub.asObservable(); constructor() { Hub.listen('auth', (data) => { switch (data.payload.event) { case 'signIn': this.isLoggedInSub.next(true); break; case 'signOut': this.isLoggedInSub.next(false); break; case 'signIn_failure': break; default: break; } }); } socialSignIn(socialProvider: CognitoHostedUIIdentityProvider): Promise<ICredentials> { return Auth.federatedSignIn({ provider: socialProvider, }); }