属性 'accessToken' 在类型 'AuthCredential' 上不存在
Property 'accessToken' does not exist on type 'AuthCredential'
通过 运行 ionic serve 我得到以下错误:
Property 'accessToken' does not exist on type 'AuthCredential'.
// You can use it to access the Google API.
let token = result.credential.accessToken;
我已将我的 firebase 从 firebase: ^4.12.1
更新为 firebase: ^5.5.9
这是我的离子信息输出
Ionic:
ionic (Ionic CLI) : 4.1.2
Ionic Framework : ionic-angular 3.9.2
@ionic/app-scripts : 3.1.9
Cordova:
cordova (Cordova CLI) : 8.1.2 (cordova-lib@8.1.1)
Cordova Platforms : android 7.0.0
Cordova Plugins : no whitelisted plugins (19 plugins total)
System:
NodeJS : v10.13.0 (C:\Program Files\nodejs\node.exe)
npm : 5.8.0
OS : Windows 10
这是auth.service.ts
中的方法
signInWithGoogle() {
console.log('Sign in with google');
return this.oauthSignIn(new firebase.auth.GoogleAuthProvider());
}
private oauthSignIn(provider: AuthProvider) {
if (!(<any>window).cordova) {
return this.afAuth.auth.signInWithPopup(provider).then(() => {
this.saveUserDetails('gmail');
});
} else {
return this.afAuth.auth.signInWithRedirect(provider)
.then(() => {
return this.afAuth.auth.getRedirectResult().then(result => {
// This gives you a Google Access Token.
// You can use it to access the Google API.
let token = result.credential.accessToken;
// The signed-in user info.
let result_user = result.user;
this.saveUserDetails('gmail');
console.log(token, result_user);
}).catch(function (error) {
// Handle Errors here.
alert(error.message);
});
});
}
}
为什么 AuthCredential 对象上不存在 accessToken 属性?
你需要看看AuthCredential的定义。如果它是 this one,它没有 accessToken 属性。
您需要将 AuthCredential
转换为具有 accessToken
属性 的 OAuthCredential
:https://github.com/firebase/firebase-js-sdk/blob/master/packages/auth-types/index.d.ts#L244
错误是由于打字稿定义引起的
替换
let token = result.credential.accessToken;
和
let token = (<any>result).credential.accessToken;
@bojeil 的建议对我有用
firebase
.auth()
.signInWithPopup(this.provider)
.then(result => {
// This gives you a Google Access Token. You can use it to access the Google API.
const credential = result.credential as firebase.auth.OAuthCredential;
const token = credential.accessToken;
// The signed-in user info.
const user = result.user;
通过 运行 ionic serve 我得到以下错误:
Property 'accessToken' does not exist on type 'AuthCredential'.
// You can use it to access the Google API.
let token = result.credential.accessToken;
我已将我的 firebase 从 firebase: ^4.12.1
更新为 firebase: ^5.5.9
这是我的离子信息输出
Ionic:
ionic (Ionic CLI) : 4.1.2
Ionic Framework : ionic-angular 3.9.2
@ionic/app-scripts : 3.1.9
Cordova:
cordova (Cordova CLI) : 8.1.2 (cordova-lib@8.1.1)
Cordova Platforms : android 7.0.0
Cordova Plugins : no whitelisted plugins (19 plugins total)
System:
NodeJS : v10.13.0 (C:\Program Files\nodejs\node.exe)
npm : 5.8.0
OS : Windows 10
这是auth.service.ts
signInWithGoogle() {
console.log('Sign in with google');
return this.oauthSignIn(new firebase.auth.GoogleAuthProvider());
}
private oauthSignIn(provider: AuthProvider) {
if (!(<any>window).cordova) {
return this.afAuth.auth.signInWithPopup(provider).then(() => {
this.saveUserDetails('gmail');
});
} else {
return this.afAuth.auth.signInWithRedirect(provider)
.then(() => {
return this.afAuth.auth.getRedirectResult().then(result => {
// This gives you a Google Access Token.
// You can use it to access the Google API.
let token = result.credential.accessToken;
// The signed-in user info.
let result_user = result.user;
this.saveUserDetails('gmail');
console.log(token, result_user);
}).catch(function (error) {
// Handle Errors here.
alert(error.message);
});
});
}
}
为什么 AuthCredential 对象上不存在 accessToken 属性?
你需要看看AuthCredential的定义。如果它是 this one,它没有 accessToken 属性。
您需要将 AuthCredential
转换为具有 accessToken
属性 的 OAuthCredential
:https://github.com/firebase/firebase-js-sdk/blob/master/packages/auth-types/index.d.ts#L244
错误是由于打字稿定义引起的
替换
let token = result.credential.accessToken;
和
let token = (<any>result).credential.accessToken;
@bojeil 的建议对我有用
firebase
.auth()
.signInWithPopup(this.provider)
.then(result => {
// This gives you a Google Access Token. You can use it to access the Google API.
const credential = result.credential as firebase.auth.OAuthCredential;
const token = credential.accessToken;
// The signed-in user info.
const user = result.user;