我使用[cordova-plugin-firebase]进行推送通知,我使用firebase实时数据库。我不知道为什么我会在下面收到以下错误。
错误:«this.firebase.getToken()不是函数»
代码:
import { Injectable } from '@angular/core';
import { AngularFireDatabase } from 'angularfire2/database';
@Injectable()
export class FirebaseProvider {
constructor(public afd: AngularFireDatabase) { }
getUserInfo(uid){
return this.afd.object('/users/'+ uid).valueChanges();
}
}
**代码FirebaseProvider **
client = Clinet.find(some_id)
site = client.sites.new(params)
site.save
任何想法为什么?
答案 0 :(得分:0)
this.firebase
是对您自己的FirebaseProvider(-Class)的引用,而不是对cordova FirebaseAddon的引用。在您的类中没有名为.getToken()
的方法,因此抛出错误。
答案 1 :(得分:-1)
根据:Firebase Documentation | getToken
不推荐使用此属性。请改用firebase.User#getIdToken。
this.firebase.auth().currentUser.getIdToken().then((token)=>{
console.log(`The token is ${token}`)
}).catch(function(error) {
// Handle error
});
您可以使用 onAuthStateChanged 来验证用户是否在获取令牌之前已登录。
this.firebase.auth().onAuthStateChanged((user)=>{
if (user) {
user.getIdToken().then((token)=>{
console.log(`The token is ${token}`)
});
}
});