google / google/GoogleSignIn-iOS

GIDSignInCompletion block not called when ASWebAuthenticationSession is interrupted by device locking

オープン
#578 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る
bug
主要言語
Objective-C
スター
750
フォーク
282
平均マージ
2日 15時間
マージ済み PR(30日)
9

説明

**Describe the bug**
When using Google Sign-In SDK on iOS, if the user locks their device or the app transitions to background during the authentication flow (while `ASWebAuthenticationSession` is active), the `GIDSignInCompletion` block is never called. This leaves the app in an indefinite loading/blocked state with no way to detect that the session was interrupted or cancelled by the OS.

**To Reproduce**
1. Initiate Google Sign-In flow in an iOS app
2. Wait for the `ASWebAuthenticationSession` system prompt to appear
3. Lock the device before completing authentication
4. Unlock the device and return to the app
5. Observe that the `GIDSignInCompletion` block is never called (no success, no error, no cancellation callback) and the `ASWebAuthenticationSession` alert is dismissed.

**Expected behavior**
The `GIDSignInCompletion` block should be invoked with either:
1. A cancellation result/error indicating the session was interrupted, OR
2. A property that allows detection of this interrupted state

This would allow the host app to reset its UI state (e.g., hide loading indicators, re-enable the sign-in button).

**Screenshots**
N/A.

**Environment**
- Device: iPhone (various models)
- OS: iOS (tested on iOS26, iOS18)
- SDK: Google Sign-In SDK for iOS

**Additional context**
This issue stems from how iOS handles `ASWebAuthenticationSession` interruptions. When the device is locked or the app goes to background, iOS may dismiss the authentication prompt without reliably delivering a cancellation callback to the SDK.
A similar issue has been reported by multiple users in the AppAuth-iOS repository: https://github.com/openid/AppAuth-iOS/issues/468. A fix for the SDK is observing the app's background/foreground state transitions and invoking the completion block if a previously active session was found. We recommend Google Sign-In SDK implement a similar mechanism to detect interrupted sessions and return an appropriate callback to the host application.

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。