Итак, у моего приложения есть возможность войти в Google. После нажатия кнопки, которую предоставляет Google, открывается веб-представление и пользователь вводит свои учетные данные. После того, как приложение сможет получать доступ к своей информации, приложение затем подписывает пользователя и изменяет SignInViewController на TabBarController (где они могут теперь взаимодействовать соответственно).
Когда пользователь нажимает кнопку "Выйти", они направляются на экран входа в систему, как и следовало ожидать. Но странно, если пользователь снова нажимает кнопку Google, они автоматически подписываются без дополнительной аутентификации и не могут удалить свою учетную запись. Является ли это способом очистки учетных данных учетной записи google, чтобы защитить пользователей от случайного кражи?
Функция входа:
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)
}
// ...
}
Функция выхода:
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)")
}
}