Я использую FireBase Rest API для входа и входа в систему. По какой-то причине, когда я подписываюсь на POST REQUEST для входа в систему, я получаю ответ, отличный от того, что показывают документы FireBase. это дает мне ответ без expiresIn. для входа это работает хорошо, я не мог найти никакого решения для этого спасибо
это мой сервис аутентификации
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);}));
}
здесь в методе входа я получаю ответ без expiresIn но документы говорят, что я должен получить это
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)
}
}