Open darkForestCat opened 10 months ago
Hello,
Thank you for reporting this.
restorePreviousSignIn
seems to be working correctly. restorePreviousSignIn
restores a locally cached user so it does not send any server requests if the tokens haven't expired (less than an hour old).
When you force a sign out from Google Accounts you are invalidating the token on the server but the client doesn't know until it requests new tokens.
This is different from signInSilently
that was used until version 5. signInSilently
fetched new tokens every time it was called.
I have switched this bug to an enhancement for a method that refreshes the tokens every time. Additionally we should update the doc comment for restorePreviousSignIn
to be explicit that this method will return what was cached locally if the tokens haven’t expired.
Describe the bug
I've been using 'GoogleSignIn' version '4.1.1' for many years and didn't have any trouble.Recently I've updated to '7.0.0' because the older version does not support the Apple Silicon.Back on the '4.1.1' I've been using
GIDSignIn.sharedInstance().signInSilently()
to sign in the user that is already signed in.Then in the delegate method I was catching any kind of error.One of these errors is expired token.And on the older version everything was working perfect as a swiss watch while the newest version seems to have some troubles with catching errors on time.If I use '4.1.1' and I force sign out a Google account session with an app using this library everything works perfect, the delegate method handles immediately an error after the firstGIDSignIn.sharedInstance().signInSilently()
attempt, while the newest version where I'm forced to use this method:does not catch any kind of error and returns user without error as if everything is okay and no force sign out was done which leads to a bad user experience because app acts like if user is signed in, while actually not.The most interesting part is that after about 1 hour this method starts returning error saying "expired token", but again after waiting one hour.Does this method really supposed to give me an error about expired token after one hour and if so how to detect this error immediately without waiting so much time?
To Reproduce Steps to reproduce the behavior:
restorePreviousSignIn
method will return the error so the app will act like it should. Even the test app has this issue, if you will sign out like in the step 2 and you will restart the test app it will show you that you are signed in...Expected behavior I guess giving me the error immediately like the
sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!)
method does in the version '4.1.1' without giving to a user any kind of bad experience.Environment