gpt4 book ai didi

javascript - 如何获取 Firebase 实时数据库 AuthToken

转载 作者:行者123 更新时间:2023-12-02 22:41:18 26 4
gpt4 key购买 nike

我从开发人员那里获得了基于 Firabase Realtime DB 的 Ionic 应用程序的代码。当尝试启动应用程序时,我收到此错误消息。

[ng] src/app/data-service.service.ts(14,36) 中出现错误:错误 TS2339:类型“{ apiKey: string;”上不存在属性“authToken”; authDomain:字符串;数据库URL:字符串;项目ID:字符串;存储桶:字符串;消息发送者 ID:字符串; }'。

不幸的是,我不知道如何从 Firebase 获取 authToken。

data-service.service.ts

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { environment } from '../environments/environment';
import * as firebase from 'firebase/app';


@Injectable({
providedIn: 'root'
})
export class DataServiceService {
userId: any;
userName: any;
databaseUrl = environment.firebase.databaseURL;
authToken = environment.firebase.authToken;

constructor(private http: HttpClient) {
console.log('Hello DataServiceService Provider');
console.log(this.databaseUrl);
console.log(this.authToken);
this.userId = localStorage.getItem('userId');
if (!localStorage.getItem('currentUserShift')) {
localStorage.setItem('currentUserShift', JSON.stringify({ periods: {} }));
}
if (!localStorage.getItem('pendingShifts')) {
localStorage.setItem('pendingShifts', JSON.stringify([]));
}
}

setUserId(userId) {
console.log('setUserId ');
this.userId = userId;
localStorage.setItem('userId', userId);
}

getUserId() {
return this.userId;
}

getUserName() {
return this.userName;
}

setUserName(userName) {
this.userName = userName;
}

updateLocalCurrentUserShift(currentUserShift) {
localStorage.setItem('currentUserShift', JSON.stringify(currentUserShift));
}

getLocalCurrentUserShift() {
return JSON.parse(localStorage.getItem('currentUserShift'));
}

async insertUserCurrentShiftToPendingShifts(currentShift) {
const pendingShifts = JSON.parse(localStorage.getItem('pendingShifts'));
pendingShifts.push(currentShift)
localStorage.setItem('pendingShifts', JSON.stringify(pendingShifts));
this.updateLocalCurrentUserShift({ periods: {} });
await this.insertPendingShiftsToFirebase();
// localStorage.setItem('currentUserShift', JSON.stringify({}));
}

async insertPendingShiftsToFirebase() {
const pendingShifts = JSON.parse(localStorage.getItem('pendingShifts'));
console.log('pendingShifts:', pendingShifts);
const failedToBeSentPendingShifts = [];
for (let i = 0 ; i < pendingShifts.length ; i++) {
try {
const key = await this.insertUserCurrentShifttoHistory(pendingShifts[i]);
console.log('key' , key);
} catch (err) {
console.log('Error while inserting into firebase', JSON.stringify(err));
failedToBeSentPendingShifts.push(pendingShifts[i]);
}
}
localStorage.setItem('pendingShifts', JSON.stringify(failedToBeSentPendingShifts));
return true;
}

createFirebaseId() {
return firebase.database().ref('/dummy').push().key;
}

getProducts() {
return this.http.get(`${this.databaseUrl}/products/.json${this.authToken?('?auth='+this.authToken):''}`);
}

getOrganizations() {
return this.http.get(`${this.databaseUrl}/organizations/.json${this.authToken?('?auth='+this.authToken):''}`);
}

insertUser(data) {
return this.http.put(`${this.databaseUrl}/users/${data.uId}.json${this.authToken?('?auth='+this.authToken):''}`, data);
}

// an API to insert product views with firebase generated key
insertProductViewAnalaytics(data) {
return this.http.post(`${this.databaseUrl}/users/${this.userId}/product_views.json${this.authToken?('?auth='+this.authToken):''}`, data);
}

getProductViewsForUser() {
return this.http.get(`${this.databaseUrl}/users/${this.userId}/product_views/.json${this.authToken?('?auth='+this.authToken):''}`);
}

getUserOrganization() {
return this.http.get(`${this.databaseUrl}/users/${this.userId}/organization/.json${this.authToken?('?auth='+this.authToken):''}`);
}

fetchUserName() {
return this.http.get(`${this.databaseUrl}/users/${this.userId}/userName/.json${this.authToken?('?auth='+this.authToken):''}`);
}

// updateUserName(data) {
// return this.http.patch(`${this.databaseUrl}/users/${this.userId}/.json${this.authToken?('?auth='+this.authToken):''}`, data);
// }

// an API to insert product views with custom timestamp based key
insertProductViewAnalayticsTimestamp(data) {
return this.http.put(`${this.databaseUrl}/product_views_timestamp/${data.scannedAt}.json${this.authToken?('?auth='+this.authToken):''}`, data);
}

// insertUserCurrentShift(data) {
// return this.http.patch(`${this.databaseUrl}/users/${this.userId}/currentShift.json${this.authToken?('?auth='+this.authToken):''}`, data);
// }

// updateUserCurrentShift(data) {
// return this.http.patch(`${this.databaseUrl}/users/${this.userId}/currentShift.json${this.authToken?('?auth='+this.authToken):''}`, data);
// }

// getUserCurrentShiftStartTime() {
// return this.http.get(`${this.databaseUrl}/users/${this.userId}/currentShift/currentPeriodStartedAt.json${this.authToken?('?auth='+this.authToken):''}`);
// }

// getUserCurrentShiftStatus() {
// return this.http.get(`${this.databaseUrl}/users/${this.userId}/currentShift/status.json${this.authToken?('?auth='+this.authToken):''}`);
// }

// insertUserPeriods(data) {
// return this.http.post(`${this.databaseUrl}/users/${this.userId}/currentShift/periods.json${this.authToken?('?auth='+this.authToken):''}`, data);
// }

// getUserCurrentShift() {
// return this.http.get(`${this.databaseUrl}/users/${this.userId}/currentShift.json${this.authToken?('?auth='+this.authToken):''}`);
// }

getPendingShifts() {
return JSON.parse(localStorage.getItem('pendingShifts'));
}

async insertUserCurrentShifttoHistory(data) {
data.userId = this.userId;
// return firebase.database().ref('/shiftHistory').push(data).key;
if (data.startedAt && data.endedAt) {
return this.http.post(`${this.databaseUrl}/shiftHistory/.json${this.authToken ? ('?auth=' + this.authToken) : ''}`, data).toPromise();
} else {
console.log('invalid data found, not inserting into firebase', JSON.stringify(data));
return null;
}
}

// removeUserCurrentShift(){
// return this.http.delete(`${this.databaseUrl}/users/${this.userId}/currentShift.json${this.authToken?('?auth='+this.authToken):''}`);
// }

getUserWorkTimeHistory() {
return this.http.get(`${this.databaseUrl}/shiftHistory.json${this.authToken?('?auth='+this.authToken):''}&orderBy="userId"&equalTo="${this.userId}"`);
}

insertUserCurrentLocation(data) {
return this.http.post(`${this.databaseUrl}/users/${this.userId}/locationHistory.json${this.authToken?('?auth='+this.authToken):''}`, data);
}

}

environment.prod.ts

export const environment = {
production: true
};

environment.ts

export const environment = {
production: false,
firebase: {
apiKey: "...",
authDomain: "...",
databaseURL: "...",
projectId: "...",
storageBucket: "...",
messagingSenderId: "..."
}
};

提前致谢!

最佳答案

我发现了这种方法:

firebase.auth().currentUser.getIdToken(/* forceRefresh */ 
true).then(function(idToken) {
// Send token to your backend via HTTPS
// ...
}).catch(function(error) {
// Handle error
});

关于javascript - 如何获取 Firebase 实时数据库 AuthToken,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58577691/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com