Выйти из Google - PullRequest
       39

Выйти из Google

0 голосов
/ 05 мая 2018

Я ввел код входа в Google с аутентификацией для доступа к Google Диску и получил кнопку выхода со следующим рекомендуемым кодом из Google:

GIDSignIn.sharedInstance().signOut()

Однако каждый раз после первого запуска приложения процесс входа больше не запрашивает мой пароль.

Если я войду в систему, а затем нажму кнопку «Выйти», в следующий раз, когда я нажму кнопку «Вход», мне будет предложено ввести учетную запись Google, а затем будет предложено разрешить доступ к диску Google.

Если я войду и выйду из приложения, не нажимая кнопку выхода, в следующий раз, когда я нажимаю кнопку входа, я не получаю никаких запросов и полностью захожу в систему.

Такое поведение согласуется с заявлением Google относительно кода быстрого запуска (https://developers.google.com/drive/v3/web/quickstart/ios?ver=swift): «Информация об авторизации хранится в вашей цепочке для ключей, поэтому последующие выполнения не будут запрашивать авторизацию».

То есть команда выхода GIDSignIn.sharedInstance (). SignOut (), похоже, работает на стороне Google (нужно выбрать учетную запись Google и разрешить доступ к диску Google при следующем входе в систему), но не на стороне iOS, так как Похоже, что iOS сохранила пароль (предположительно в цепочке для ключей) и всегда передает его в Google при первом входе в систему.

Я видел сообщение для Google Sign Out iOS , где Бирендра рекомендовала попробовать

[GTMOAuth2ViewControllerTouch removeAuthFromKeychainForName:kKeychainItemName];

для удаления пароля из цепочки для ключей устройства iOS.

Мне не повезло узнать, как использовать это предложение. Может кто-нибудь объяснить, как удалить информацию о пароле, введенную пользователем с помощью Google SignIn? (Предполагая, что это то, что нужно сделать, чтобы полностью выйти из системы). Я пользуюсь Swift.

Обычно, когда брелок запоминает пароль для Google, проблем не будет, но это приложение для сбора исследовательских данных. Испытуемые будут использовать свое собственное устройство iOS (iPhone) и войти в учетную запись Google лаборатории, поэтому мы не хотим, чтобы этот пароль оставался в их цепочке для ключей.

Помощь приветствуется.

1 Ответ

0 голосов
/ 21 августа 2018

Вы можете попробовать поместить его в свой AppDelegate

func applicationDidEnterBackground(_ application: UIApplication) {
    // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
    // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.

    GIDSignIn.sharedInstance().signOut()
}

И как только приложение будет запущено снова, Вы можете проверить статус пользователя, вошедшего в систему, и перенаправить пользователя на экран входа в систему.

func applicationWillEnterForeground(_ application: UIApplication) {
    // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
    //REDIRECT USER TO LOGIN SCREEN.
}

Надеюсь, это поможет.

...