【发布时间】:2019-04-14 17:17:23
【问题描述】:
在我的一个服务类中,我尝试向我的 firebase 身份验证 API 执行 API 请求。服务类如下所示:
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders, HttpResponse } from '@angular/common/http';
import { catchError, tap } from 'rxjs/operators';
import { Observable, of } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class AuthService {
private apiKey: string = '[API-Key]';
private userToken: string;
login(email: string, password: string): Observable<HttpResponse<string>> {
console.log('Ich wurde ausgeführt.')
return this.httpClient.post<string>(`https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyPassword?key=${this.apiKey}`,
{email: email, password: Password, returnSecureToken: true}, {observe: 'response'})
.pipe(
tap(
response => {
console.log(response);
this.userToken = response.idToken;
},
error => {
console.log(error);
return error;
}
)
)
}
constructor(private httpClient: HttpClient) { }
}
在同一时刻,如果请求成功执行,我想使用来自 httpClient 发布请求的响应将响应提供的令牌值分配给服务类中的 private userToken: string 变量。
再次结束嚎叫的故事:我的问题是这个网络请求 firebase Auth API 没有被触发,我不知道为什么。此外,我认为我的代码进行响应非常好,可以改进。
谁能帮帮我?非常感谢您,祝您有愉快的一天!
【问题讨论】:
-
您需要订阅它才能执行请求
-
你有没有在你的模块中导入httpmodule
-
如果没有 httpmodule 导入,问题不会是“请求没有被触发”,而是“构建错误”。
-
@jcuypers 我尝试了几次订阅它,但它没有工作,因为我从可观察类型返回了一个对象,并且它不能与订阅一起使用。不要忘记我想在服务本身中分配值。所以我的解决方案是,我不会将响应作为可观察对象返回,但我订阅了服务本身中的响应,这似乎是可行的。非常感谢您的提示!
-
谁订阅并不重要,但没有任何订阅,请求不会被触发。
标签: angular httpclient