【问题标题】:Logout/Disconenct from Google Plus (Ionic/Cordova - cordova-plugin-googleplus)从 Google Plus 注销/断开连接 (Ionic/Cordova - cordova-plugin-googleplus)
【发布时间】:2017-11-02 12:02:49
【问题描述】:

我正在尝试从 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>;

即使在关闭应用程序并重新打开它之后,我仍然可以看到对数据库所做的更改,即使我无法注销!

我希望这能澄清我的问题。

谢谢

【问题讨论】:

    标签: android cordova firebase-authentication google-plus-signin


    【解决方案1】:

    知道了!使用 trySilentLogin。 你必须像 login() 的实现一样来实现它,它会很好地工作!

    另外别忘了将它添加到构造函数中:

    this.yourfunctioname();
    

    在你里面会有他 googlePlus.trySilentLogin() 代码!

    【讨论】:

      猜你喜欢
      • 2023-03-14
      • 1970-01-01
      • 2017-09-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-15
      • 2021-04-12
      • 1970-01-01
      • 2022-01-13
      相关资源
      最近更新 更多