I have had the same issue, have managed to get it working using expo-dev-client.

I didn't find a way to fix this for Expo Go - not sure if there is one currently. It seems like using Oauth google login on IOS, currently requires building the app.

Once you configure the build, you can use

import { makeRedirectUri } from 'expo-auth-session';

to get the correct redirect URL.

const [request, response, promptAsync] = Google.useAuthRequest({
 clientId: 'xxxx',
 iosClientId:
        'xxxx',
 redirectUri: makeRedirectUri()});

Also remember to generate IOS credentials in the google console.

Answer from bonbonvoyage on Stack Overflow
🌐
Expo Documentation
docs.expo.dev › guides › google-authentication
Using Google authentication - Expo Documentation
The @react-native-google-signin/google-signin library provides a way to integrate Google authentication in your Expo app. It also provides native sign-in buttons and supports authenticating the user as well as obtaining their authorization to ...
🌐
Expo Documentation
docs.expo.dev › versions › latest › sdk › auth-session
AuthSession - Expo Documentation
For example, use @react-native-google-signin/google-signin for Google authentication and react-native-fbsdk-next for Facebook. For more information, see Authentication overview. expo-crypto is a peer dependency and must be installed alongside expo-auth-session.
🌐
Reddit
reddit.com › r/reactnative › expo-google-app-auth vs expo-auth-session
r/reactnative on Reddit: expo-google-app-auth vs expo-auth-session
November 11, 2021 -

Expo on their page wants us to use expo-auth-session over expo-google-app-auth.

But,

  • The expo-auth-session flow throws an ugly / scammy looking alert to the user before going into the google auth flow in an external browser, after showing a browser selection. Users are likely to drop off at this point itself, this is bad UX.

  • expo-google-app-auth doesn't do this, it seems to load what looks like a webiew inline and shows a clean google account selection screen.

  • However if you ignore this deprecation and continue using expo-google-app-auth, there is a runtime warning like "Deprecated: You will need to use expo-google-sign-in to do server side authentication outside of the Expo client" which I find confusing. Don't you have to do server side authentication (if you need to) regardless of which solution you use?

Thoughts around this? If you use the expo managed workflow, which one did you pick? I am at a bit of a dilemma...

🌐
Expo Documentation
docs.expo.dev › develop › authentication
Authentication in Expo and React Native apps - Expo Documentation
Passkeys offer a seamless and secure experience, but they require a user to already be authenticated before registering one. They also require extra configuration if you're not using a provider that handles them for you. React Native passkey support: react-native-passkeys · Native passkey support with Clerk: Clerk Passkeys for Expo · This guide covers a lot of ground, from basic email and password flows to fully custom OAuth implementations, session management, and modern methods like biometrics and passkeys.
🌐
npm
npmjs.com › package › expo-auth-session
expo-auth-session - npm
AuthSession is the easiest way to implement web browser based authentication (for example, browser-based OAuth flows) to your app, built on top of expo-web-browser. ... For managed Expo projects, please follow the installation instructions in ...
      » npm install expo-auth-session
    
Published   Dec 05, 2025
Version   7.0.10
Author   650 Industries, Inc.
Find elsewhere
🌐
DEV Community
dev.to › angela300 › login-with-google-on-react-native-expo-3h9n
Login with Google on React Native Expo - DEV Community
March 18, 2024 - Hit create and on the pop up screen that comes up, copy the client ID an paste it your App.js file for later use That was the most difficult part, now we can start creating the code for the application In app.js, import WebBrowser: Import * as WebBrowser from “expo-web-browser” Initialize the WebBrowser with this command: WebBrowser.maybeCompleteAuthSession(); Also add this import in your app.js: Import * as Google from “expo-auth-session/providers/google” To save the information of the user when they sign in so that they do not have to sign in again, we will use async storage: Import
🌐
Medium
nishant-kr.medium.com › implementing-google-auth-with-react-native-expo-app-48005897ab21
Implementing Google Auth with React-Native Expo app | by Nishant Kumar | Medium
January 27, 2025 - This shows you how to integrate Google Sign-In with a React Native Expo app, covering setup, authentication, and troubleshooting issues.
🌐
Expo Documentation
docs.expo.dev › guides › authentication
Authentication with OAuth or OpenID providers - Expo Documentation
import { useEffect } from 'react'; import * as WebBrowser from 'expo-web-browser'; import { makeRedirectUri, useAuthRequest } from 'expo-auth-session'; import { Button } from 'react-native'; WebBrowser.maybeCompleteAuthSession(); // Endpoint const discovery = { authorizationEndpoint: 'https://github.com/login/oauth/authorize', tokenEndpoint: 'https://github.com/login/oauth/access_token', revocationEndpoint: 'https://github.com/settings/connections/applications/<CLIENT_ID>', }; export default function App() { const [request, response, promptAsync] = useAuthRequest( { clientId: 'CLIENT_ID', scopes: ['identity'], redirectUri: makeRedirectUri({ scheme: 'your.app' }), }, discovery ); useEffect(() => { if (response?.type === 'success') { const { code } = response.params; } }, [response]); return ( <Button disabled={!request} title="Login" onPress={() => { promptAsync(); }} /> ); }
🌐
Medium
medium.com › @gbenleseun2016 › guide-to-sign-in-with-google-on-the-expo-platform-using-expo-auth-session-9d3688d2107a
Guide to sign In with Google On the Expo platform using expo-auth-session. | by Seun Gbenle | Medium
September 6, 2023 - “expo-auth-session”- command will manage the sign in with google, “expo-crypto” is a peer dependency and must be installed alongside expo-auth-session, “expo-web-browser” will enable you sign in to google without leaving the application.
🌐
YouTube
youtube.com › watch
Expo Auth Session for Google Authentication on React Native Apps - YouTube
Hi everyone!SKIP INTRO and go straight to code: 2:28Today I am going to talk about Expo AuthSession with the Google provider and some drawbacks it has, speci...
Published   February 5, 2022
🌐
GitHub
github.com › expo › expo › blob › main › packages › expo-auth-session › src › providers › Google.ts
expo/packages/expo-auth-session/src/providers/Google.ts at main · expo/expo
An open-source framework for making universal native apps with React. Expo runs on Android, iOS, and the web. - expo/packages/expo-auth-session/src/providers/Google.ts at main · expo/expo
Author   expo
Top answer
1 of 2
2

this is working for me

import { makeRedirectUri } from 'expo-auth-session';
import Constants from 'expo-constants';
import * as Google from 'expo-auth-session/providers/google';

const EXPO_REDIRECT_PARAMS = {
  useProxy: true,
  projectNameForProxy: '@yourUsername/yourScheme',
};

const NATIVE_REDIRECT_PARAMS = { native: 'yourScheme://' };

const REDIRECT_PARAMS =
  Constants.appOwnership === 'expo'
    ? EXPO_REDIRECT_PARAMS
    : NATIVE_REDIRECT_PARAMS;

const GOOGLE_CONFIG = {
  androidClientId: '...',
  webClientId: '...',
  iosClientId: '...',
  redirectUri: makeRedirectUri(REDIRECT_PARAMS),
};

const LoginPage = ()=> {
     const [request, response, promptAsync] = Google.useAuthRequest(GOOGLE_CONFIG)
     ...

}
2 of 2
-2

i get invalid_request and i cant solve it. im trying with Expo Go and Native. Same problem. Could anyone give me a hand please?.

import { makeRedirectUri } from "expo-auth-session";
import * as Google from "expo-auth-session/providers/google";
import { LinearGradient } from "expo-linear-gradient";
import { router } from "expo-router";
import * as WebBrowser from "expo-web-browser";
import { useEffect } from "react";
import { Image, StyleSheet, Text } from "react-native";
import SocialLoginButton from "./commons/socialLoginButton";

WebBrowser.maybeCompleteAuthSession();

export default function LoginScreen() {

  const redirectUri = makeRedirectUri({
    scheme: "app",
  });

  console.log("Redirect URI:", redirectUri);

  const [request, response, promptAsync] = Google.useAuthRequest({
    webClientId: "",
    androidClientId: "",
    scopes: ["profile", "email"],
    redirectUri,
  });

  useEffect(() => {
    if (response?.type === "success") {
      const { authentication } = response;

      fetch("https://www.googleapis.com/oauth2/v3/userinfo", {
        headers: { Authorization: `Bearer ${authentication?.accessToken}` },
      })
        .then(res => res.json())
        .then(userInfo => {
          console.log("Google User Info:", userInfo);
          router.replace("/homeScreen");
        });
    }
  }, [response]);

  return (
    <LinearGradient colors={["#6EC1E4", "#8364E8"]} style={styles.container}>
      <Image
        source={require("../assets/images/logo-blanco.png")}
        style={styles.logo}
        resizeMode="contain"
      />
      <Text style={styles.title}>Hubbly</Text>
      <Text style={styles.subtitle}>Log in and connect with new experiences.</Text>

      <SocialLoginButton
        backgroundColor="#4285F4"
        icon="google"
        text="Inicia sesión con Google"
        textColor="#fff"
        onPress={() => promptAsync()}
      />
    </LinearGradient>
  );
}

const styles = StyleSheet.create({
  container: { flex: 1, justifyContent: "center", alignItems: "center", paddingHorizontal: 20 },
  logo: { width: 100, height: 100, marginBottom: 20 },
  title: { fontSize: 28, fontWeight: "bold", color: "white", marginBottom: 10 },
  subtitle: { fontSize: 16, color: "white", textAlign: "center", marginBottom: 40 },
  moreButton: { flexDirection: "row", alignItems: "center", marginTop: 16 },
  moreText: { color: "#fff", fontSize: 16, marginRight: 5 },
  terms: { color: "#fff", fontSize: 12, textAlign: "center", marginTop: 30, paddingHorizontal: 20 },
});
🌐
Medium
medium.com › @csaba.ujvari › expo-google-login-f83e2b7885b0
React Native Google Login. I have started to add a new login… | by chabeee | Medium
May 6, 2022 - I have started to add a new login method to our existing Expo (SDK 44) based React Native app. For the first run, it took me a little while realizing that the usage of the official firebase/auth package with RN/Expo is not that easy: https://github.com/firebase/firebase-js-sdk/issues/5699#issuecomment-961263804. ... The doc drives you through the initializing process, but here are the some of the key points: Installation: expo install expo-auth-session expo-random · After that you need to setup the Google credentials which is documented here: https://docs.expo.dev/guides/authentication/#google
🌐
Supabase
supabase.com › docs › guides › auth › quickstarts › with-expo-react-native-social-auth
Build a Social Auth App with Expo React Native | Supabase Docs
2 days ago - Use the Expo SplashScreen to display a loading screen while fetching the user profile and verifying authentication status. Create a React context to manage the authentication session, making it accessible from any component:
🌐
GitHub
gist.github.com › jdthorpe › aaa0d31a598f299a57e5c76535bf0690
expo-auth-session example · GitHub
Do you know why? I remember Expo Go asked me for permission to access external link before open Google's authentication screen on my old login method using AuthSession.startAsync({ authUrl }) (SDK 48) and now it doesn't ask me anymore.
🌐
Medium
medium.com › @farmaan30327 › sign-in-with-google-expo-react-native-eced76b47929
Sign In with Google Expo React Native | by Farmaan | Medium
June 29, 2024 - Implementing Sign In with Google in your Expo React Native application can significantly enhance user experience by allowing seamless and secure access to your app. This feature leverages Google’s robust authentication system, ensuring that ...
🌐
GitHub
github.com › expo › expo › issues › 18270
expo-auth-session with Google login problems in Development build on android · Issue #18270 · expo/expo
July 16, 2022 - Reload to refresh your session. ... AuthSessionDevelopment Buildsdocsneeds more infoTo be used when awaiting reporter responseTo be used when awaiting reporter responseoutdated ... hi, Loggin in with expo-auth-session works absolutely fine in Expo Go App but as soon as .apk is built, the login workflow opens the signin page and then closes after the login is complete but the response vanishes and does not do anything, but this happens only in .apk but works fine in Expo Go App.
Published   Jul 16, 2022