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 viaexpo-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
- Reference, unlinked as I’m new to the forums and have hit the limit of links
- 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.