在向Firebase发出HTTP请求时,尝试将授权的IdToken
作为字符串传递时会出现以下错误:
类型“答应”的参数不能分配给“string”类型的参数。
Firebase Auth: getIdToken()
getFirebaseToken() {
return this.angularFireAuth
.auth.currentUser.getIdToken(true).then(idToken => {
this.token = idToken;
return idToken;
}).catch(tokenerror => {
console.log(tokenerror);
});
}
使用Firebase ID令牌从服务器获取设置
getSettings() {
let firebaseToken = this.authenticationService.getFirebaseToken();
return this.http.get<SettingsModel>(API.DB_URL + API.userSettings,
{
params: new HttpParams().set('auth', firebaseToken),
}
).subscribe(settings => {
console.log(settings);
})
}
发布于 2019-08-14 13:56:58
Firebase方法getIdToken
返回一个Promise<string>
。
在函数getFirebaseToken()
中,不能直接从允诺then
块中返回idToken
。
选项1:异步/等待
async function getSettings() {
const firebaseToken = await this.angularFireAuth.auth.currentUser.getIdToken(true);
this.http.get<SettingsModel>(API.DB_URL + API.userSettings, {
params: new HttpParams().set('auth', firebaseToken) }).subscribe(settings => {
console.log(settings);
}
)
}
选项2:链式函数调用
function getSettings(): Observable<SettingsModel> {
return this.angularFireAuth.auth.currentUser.getIdToken(true).then(idToken => {
return retrieveSettingsFromDB(idToken);
}).catch(tokenerror => {
console.log(tokenerror);
});
}
function retrieveSettingsFromDB(idToken: string) {
return this.http.get<SettingsModel>(API.DB_URL + API.userSettings,
{ params: new HttpParams().set('auth', idToken) });
}
getSettings().subscribe(settings => {
console.log(settings);
})
https://stackoverflow.com/questions/57502336
复制相似问题