Edición angular y la base de fuego

Gin Arman:

Yo uso API firebase Resto de signo en sesión. Por alguna razón cuando me suscribo a la solicitud POST del inicio de sesión consigo una respuesta diferente de lo que muestran los documentos base de fuego. me da la respuesta sin expiresIn. para el signo de que funciona bien no pude encontrar ninguna solución para esto gracias

esto es mi servicio de autenticación

   import { User } from './user.model';
    import { Injectable } from '@angular/core';
    import { HttpClient, HttpErrorResponse } from '@angular/common/http';
    import { catchError, tap } from 'rxjs/operators';
    import { throwError, BehaviorSubject } from 'rxjs';

    export interface AuthResponseData{
    kind: string;
    idToken:string;
    email:string;
    refreshToken:string;
    expiresIn: string;
    localId: string;
    registered?: boolean;

    }

    @Injectable({
    providedIn: 'root'
    })
    export class AuthService {

     user = new BehaviorSubject<User>(null);
     constructor(private Http: HttpClient) { }

     signUp(email:string, password:string){
     return this.Http.post<AuthResponseData>('https://identitytoolkit.googleapis.com/v1/accounts:signUp? 
     key=xxxxxxxxxxxxxxxxxxxxxxx',
     {email : email,password: password, returnSourceToken : true}).
     pipe(catchError(this.errorHandler),
     tap(resData=>{
      console.log(resData);
      this.authHandler(resData.email,resData.localId,resData.idToken,+resData.expiresIn);}));
     }

aquí en el método de inicio de sesión i obtener una respuesta sin expiresIn pero los documentos dicen que debería conseguirlo

     login(email:string,password:string){
     return this.Http.post<AuthResponseData> 
     ('https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword? 
     key=xxxxxxxxxxxxxxxxxxx',
    {email : email, password: password,returnSourceToken : 
    true}).pipe(catchError(this.errorHandler),tap(resData=>{
      console.log(resData);
      this.authHandler(resData.email,resData.localId,resData.idToken,+resData.expiresIn)

      }));
     }


  private authHandler(email:string,userId:string,token:string,expiresIn:number){
    const expDate = new Date(new Date().getTime()+ expiresIn * 1000)
    const user = new User(email,userId,token,expDate);

   this.user.next(user);
  }


  private errorHandler(errorResponse: HttpErrorResponse){
    let errMsg ='Some error occurred';
    if(!errorResponse.error || !errorResponse.error.error.message){
      return throwError(errMsg)
    }
    switch(errorResponse.error.error.message){
      case 'EMAIL_EXISTS':
        errMsg = 'Email Already Exsits';
        break
        case 'INVALID_PASSWORD':
          errMsg = 'Wrong password';
          break
          case 'EMAIL_NOT_FOUND':
            errMsg = 'Email was not found'
            break
    }
    return throwError(errMsg)
  }
}
Mohammed Yousry:

parece que hay un error tipográfico en el objeto que envió a la solicitud posterior ha utilizado returnSourceToken, debe serreturnSecureToken

por lo que el objeto se pasa al puesto debe ser

{
  email: email,
  password: password,
  returnSecureToken: true
}

consulte la documentación base de fuego aquí https://firebase.google.com/docs/reference/rest/auth#section-create-email-password

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=406240&siteId=1
Recomendado
Clasificación