Wie man sich nach der Authentifizierung von Google abmeldet

So hat meine App die Option, sich bei Google anzumelden. Wenn Sie auf die von Google bereitgestellte Schaltfläche klicken, wird eine Webansicht geöffnet, in der der Benutzer seine Anmeldeinformationen eingibt. Nachdem die App auf ihre Informationen zugegriffen hat, meldet sie den Benutzer an und ändert den SignInViewController in den TabBarController (wo sie jetzt entsprechend interagieren können).

Wenn der Benutzer eine Abmeldetaste drückt, wird er erwartungsgemäß zum Anmeldebildschirm geleitet. Aber das Seltsame ist, wenn der Nutzer erneut auf die Google-Schaltfläche drückt, wird er automatisch ohne weitere Authentifizierung und ohne Option zum Entfernen seines Kontos angemeldet. Ist dies eine Möglichkeit, die Anmeldeinformationen des Google-Kontos zu löschen, um die Nutzer vor versehentlichem Diebstahl zu schützen?

Anmeldefunktion:

func signIn(signIn: GIDSignIn!, didSignInForUser user: GIDGoogleUser!, withError error: NSError!) {
    if let error = error {
        print(error.localizedDescription)
        return
    }
    let authentication = user.authentication
    let credential = FIRGoogleAuthProvider.credentialWithIDToken(authentication.idToken, accessToken: authentication.accessToken)
    FIRAuth.auth()?.signInWithCredential(credential) { (user, error) in
        // ...
        SignInViewController().signedIn(user)
    }
    // ...
}

Abmeldefunktion:

func signOutOverride() {
    do {
        try! FIRAuth.auth()!.signOut()
        CredentialState.sharedInstance.signedIn = false
        // Set the view to the login screen after signing out
        let storyboard = UIStoryboard(name: "SignIn", bundle: nil)
        let loginVC = storyboard.instantiateViewControllerWithIdentifier("SignInVC") as! SignInViewController
        let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
        appDelegate.window?.rootViewController = loginVC
    } catch let signOutError as NSError {
        print ("Error signing out: \(signOutError)")
    }
}

Antworten auf die Frage(10)

Ihre Antwort auf die Frage