GoogleSignIn.signInAsync() crashes with SIGABRT on iOS

As the title suggests, I’m having issues utilizing the expo-google-sign-in module in an ejected Expo application. Some baseline information about my environment:

  • Affected platform(s): iOS (simulator running 12.1)
  • Expo SDK version: 32.0.0
  • Ejected from SDK version: 32.0.0
  • Expokit version from Podfile: ios/2.10.2
  • Relevant pod declaration:
    pod 'EXGoogleSignIn',
        :path => "../node_modules/expo-google-sign-in/ios"
    
  • Reverse client ID supplied to URLSchemes: Yes (validated both in XCode and via expo-app-auth) (reference)
  • Reverse client ID supplied to GoogleSignIn.initAsync: Yes (reference)

Expected Behavior:
User is prompted with either native (works on Android) or web based Google sign-in prompt, provides credentials, which is then passed onto react-native-firebase for authentication.


Actual Behavior:
Application freezes, then crashes.

When running with debugger on in XCode, see the following SIGABRT on primary thread:


(not my screenshot, but the exact same file, line, and error applies to my issue; source: https://stackoverflow.com/questions/55056937/ios-crashes-on-google-signin-react-native-expo-32)

XCode reports the following log statements:

libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb) 

Example Code: Imports

import Sentry from 'sentry-expo';
import { GoogleSignIn, } from 'expo';
import firebase from 'react-native-firebase';

const GoogleServices = require('./../../../conf.d/GoogleService-Info.json');

Example Code: Initializing Google Sign-In

try {
    await GoogleSignIn.initAsync({
        clientId: GoogleServices.REVERSED_CLIENT_ID,
    });
} catch ({ message }) {
    alert('Error requesting Google authentication services: ' + message);
}

Example Code: Requesting signInAsync

try {
    // Necessary for Android. Returns true always on iOS.
    await GoogleSignIn.askForPlayServicesAsync();
    try {
        const { type, user } = await GoogleSignIn.signInAsync();
        if (type === 'success') {
            return user;
        } else {
            return false;
        }
        ...

Troubleshooting Steps Taken so Far

  • Validated proper reversed clientId is available throughout the application
  • Tried importing directly from expo-google-sign-in
    • Reference, unlinked as I’m new to the forums and have hit the limit of links
      https://forums.expo.dev/t/expo-google-sign-in-doesnt-seem-to-work/20231/5
  • Cleared transformer cache, cleared build cache, cleared and re-installed node_modules

I’m really hoping I won’t have to revert to Expo SDK 31, as we are utilizing several of the features and fixes applied in 32. Any assistance or guidance here is appreciated.

2 Likes

This topic was automatically closed 15 days after the last reply. New replies are no longer allowed.