I was having a very similar issue, until realizing that the GIDSignInDelegate was being garbage collected between starting the signin and getting the callback. Just storing a reference to it elsewhere resolved my issues. (presumably Google uses a weak reference)