Angular 2从服务获取Google身份验证状态
我正在使用Google身份验证成功登录和注销,但我的身份验证服务没有返回登录状态。我正在尝试在Auth-Guard中读取它,以确定是否应该直接进入登录页面。我得到的错误是Angular 2从服务获取Google身份验证状态,angular,google-api,angular2-services,google-authentication,Angular,Google Api,Angular2 Services,Google Authentication,我正在使用Google身份验证成功登录和注销,但我的身份验证服务没有返回登录状态。我正在尝试在Auth-Guard中读取它,以确定是否应该直接进入登录页面。我得到的错误是\u googleAuth未定义(“TypeError:无法读取未定义的属性'isSignedIn') 检查代码何时初始化gapi.auth2 这是您需要检查Google auth登录状态的内容 var result = false; gapi.load('auth2', function() { //gapi.auth
\u googleAuth
未定义(“TypeError:无法读取未定义的属性'isSignedIn')
检查代码何时初始化gapi.auth2 这是您需要检查Google auth登录状态的内容
var result = false;
gapi.load('auth2', function() {
//gapi.auth2.init(authOptions); // if you haven't initialized yet
//get instance with client ID, must be called after gapi.auth2.init
var googleAuthTest = gapi.auth2.getAuthInstance();
result = googleAuthTest.isSignedIn.get();
});
显示您是如何初始化的。_googleAuth?@romac添加了它。thxit在前三行的某个地方失败了,您应该进行调试。对不起,这是离题的。你说得对。我的代码正在为登录初始化gapi.auth2,但后来我没有使用GetAuthInstance。阅读本文的人面临的一个难题是,不能对其进行两次初始化。您将得到错误“已使用不同选项初始化”
getAuthenticatedStatusAsObservable(): Observable<boolean> {
if(this._googleAuth){
return Observable.of(this._googleAuth.isSignedIn.get());
}
else {return Observable.of(false) }
}
}
loadAuth() {
// attempt to SILENT authorize
this.gapiLoad
.load('auth2')
.switchMap(() => this.authorize())
.do((googleAuth: gapi.auth2.GoogleAuth) => this.saveGoogleAuth(googleAuth))
.do((googleAuth: gapi.auth2.GoogleAuth) => this.listenToGoogleAuthSignIn(googleAuth))
.filter((googleAuth: gapi.auth2.GoogleAuth) => this.isSignedIn())
.filter((googleAuth: gapi.auth2.GoogleAuth) => this.hasAccessToken(googleAuth))
.map((googleAuth: gapi.auth2.GoogleAuth) => googleAuth.currentUser.get())
.subscribe((googleUser: gapi.auth2.GoogleUser) => {
this.zone.run(() => this.handleSuccessLogin(googleUser));
});
}
var result = false;
gapi.load('auth2', function() {
//gapi.auth2.init(authOptions); // if you haven't initialized yet
//get instance with client ID, must be called after gapi.auth2.init
var googleAuthTest = gapi.auth2.getAuthInstance();
result = googleAuthTest.isSignedIn.get();
});