我正在尝试退出/断开Google Plus (我正在使用cordova-plugin-googleplus https://github.com/EddyVerbruggen/cordova-plugin-googleplus/)
以下是正在发生的事情:我通过我的应用程序成功登录Google Plus并显示一个注销按钮。如果我点击退出,它将正确注销,一切都很好!然而,如果我打开我的应用程序,成功登录Google Plus并完全关闭应用程序,当我再次打开应用程序并尝试注销时会出现错误:请在断开连接之前使用登录或trySilentLogin
来自插件 GooglePlus.java 中的此代码:
private void disconnect() {
if (this.mGoogleApiClient == null) {
savedCallbackContext.error("Please use login or trySilentLogin before disconnecting");
return;
}
ConnectionResult apiConnect = mGoogleApiClient.blockingConnect();
if (apiConnect.isSuccess()) {
Auth.GoogleSignInApi.revokeAccess(this.mGoogleApiClient).setResultCallback(
new ResultCallback<Status>() {
@Override
public void onResult(Status status) {
if (status.isSuccess()) {
savedCallbackContext.success("Disconnected user");
} else {
savedCallbackContext.error(status.getStatusCode());
}
}
}
);
}
}
这是我的代码 home.ts :
Logout() {
let env = this;
this.googlePlus.disconnect().then(
(msg) => {
if(firebase.auth().currentUser){
firebase.auth().signOut();
}
env.nativeStorage.remove('user');
}).catch(
(msg) => {
alert('logout error: '+msg);
})
;
}
让我登录的代码似乎没有应用程序知道它的“登录”在 home.ts构造函数:
this.user = this.afAuth.authState.switchMap(user => {
if (user)
{
return this.afs.doc<User>(`users/${user.uid}`).valueChanges()
} else
{
return Observable.of(null)
}
})
用户属于Observable:
user: Observable<User>;
即使在关闭应用程序并重新打开它之后,即使我无法注销,我仍然可以看到对数据库所做的更改!
我希望澄清我的问题。
谢谢
答案 0 :(得分:1)
知道了!使用 trySilentLogin 。 你必须完全像login()的实现一样实现它,它会很好地工作!
另外不要忘记将它添加到构造函数中:
this.yourfunctioname();
在里面你会得到googlePlus.trySilentLogin()代码!