Guardando el GIDGoogleUser actual en lugar de iniciar session en cada lanzamiento

Estoy usando GIDSignInButton para firmar a mis usuarios en Google. El problema es que no estoy seguro de cómo save el usuario actual para que cada usuario no tenga que iniciar session cada vez que abren la aplicación. He intentado usar signInSilently() pero obtengo que The operation couldn't be completed. (com.google.GIDSignIn error -4.) The operation couldn't be completed. (com.google.GIDSignIn error -4.) cada vez.

Ese error, en el file del encabezado, dice esto:

 // Indicates there are no auth tokens in the keychain. This error code will be returned by // signInSilently if the user has never signed in before with the given scopes, or if they have // since signed out. kGIDSignInErrorCodeHasNoAuthInKeychain = -4, 

En mi caso, el usuario ya ha iniciado session con los ámbitos específicos y aún no se ha desconectado. Entonces no estoy seguro de qué podría estar causando ese error.

Después de que un usuario signInSilently() , ¿cómo debo save esa instancia donde puedo usar signInSilently() después de eso? ¿También interviene el manejo con los tokens de actualización y acceso?

¿Estás seguro de que no has desconectado ni desconectado el usuario en alguna parte?

Siempre estoy comprobando si el usuario ha hasAuthInKeychain o ha guardado la authentication previa al usar hasAuthInKeychain (por ejemplo, en viewWillAppear ):

 private func checkIfGoogleUserIsAuthorized() { if GIDSignIn.shanetworkingInstance().hasAuthInKeychain() { // User was previously authenticated to Google. Attempt to sign in. GIDSignIn.shanetworkingInstance().signInSilently() } else { // User was not previously authenticated to Google. self.updateUI() } } 

En caso de que no haya authentication guardada, debe activar el inicio de session silencioso y manejar la respuesta con la implementación de los protocolos didSignInForUser . El método didSignInForUser .

Si, en su proyecto, la class que implementa GIDSignInUIDelegate es una subclass de UIViewController , entonces no implemente el

 signInWillDispatch:error: signIn:presentViewController: signIn:dismissViewController: 

methods del protocolo GIDSignInUIDelegate .

Elimine estos methods de su controller de vista si agregó. pero debe cumplir el protocolo GIDSignInUIDelegate sin implementar los methods.

Se solucionará el error -4.

Consulte la guía de desarrolladores de Google para get ayuda.