google / google/GoogleSignIn-iOS

GIDSignIn.sharedInstance.restorePreviousSignIn() sometimes fails to invoke completion handler

Abierto
#431 1 comentario 1 reacción 0 asignados Ver en GitHub
bug triage
Lenguaje dominante
Objective-C
Estrellas
750
Forks
282
Merge medio
2 d 15 h
PR fusionados (30 d)
9

Descripción

**Describe the bug**
GIDSignIn.sharedInstance.restorePreviousSignIn() does not always invoke the completion handler.

I suspect these two closed issues may have the same root cause:
* https://github.com/google/GoogleSignIn-iOS/issues/360
* https://github.com/google/GoogleSignIn-iOS/issues/378

**To Reproduce**
There appears to be two requirements to reproduce this:
* restorePreviousSignIn() must be invoked multiple times before the first call completes
* the tokens must be close enough to expiring to trigger refresh logic

***Specific repro steps***:
1. Make local changes to DaysUntilBirthday sample app such that restorePreviousSignIn() is invoked twice - see:
https://github.com/google/GoogleSignIn-iOS/commit/01d8cb32d1315cea141feeed5c055c9beb912561
1. Sign in
1. Kill and restart the app. Check console: should see output below, indicating that both completion blocks are invoked:
0: Restoring
1: Restoring
0: Done: Optional(), nil
1: Done: Optional(), nil
1. Kill the app and wait for about an hour. I was also able to reproduce immediately by changing kMinimalTimeToExpire and kMinimumRestoredAccessTokenTimeToExpire to both be 60.0*59.9.
1. Restart the app and check console output.

**Expected behavior**
console output should be the following, indicating that both completion blocks were invoked:
0: Restoring
1: Restoring
0: Done: Optional(), nil
1: Done: Optional(), nil

**Actual behavior**
console output is the following, indicating the first completion block was *not* invoked:
0: Restoring
1: Restoring
1: Done: Optional(), nil

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.