Helped me through, despite not being the same problem the use the URL quote helped me solve this by changing a bit how I thought about it!

The final result became a little too big to paste here, but the handling ended up being relatively straightforward:

  useEffect(() => {
    if (result?.type === "success") {
      const { token, iv } = getParamsFromUrl(result.url)

      const session = decrypt(token, key, iv)
      console.log({ session })
    }
  }, [result])
🌐
Expo Documentation
docs.expo.dev › versions › latest › sdk › auth-session
AuthSession - Expo Documentation
A universal library that provides an API to handle browser-based authentication. ... AuthSession enables web browser-based authentication (for example, browser-based OAuth flows) in your app by utilizing WebBrowser and Crypto.
🌐
Expo Documentation
docs.expo.dev › guides › authentication
Authentication with OAuth or OpenID providers - Expo Documentation
Learn how to utilize the expo-auth-session library to implement authentication with OAuth or OpenID providers.
🌐
Expo Documentation
docs.expo.dev › versions › latest › sdk › webbrowser
WebBrowser - Expo Documentation
A promise which fulfils with WebBrowserMayInitWithUrlResult object. ... This will be done using a "custom Chrome tabs" browser, AppState, and Linking APIs. Opens the url with Safari in a modal using ASWebAuthenticationSession.
🌐
Better Auth
better-auth.com › docs › integrations › expo
Expo Integration | Better Auth
Social Authentication Support: enables social auth flows by handling authorization URLs and callbacks within the Expo web browser.
🌐
Expo Documentation
docs.expo.dev › develop › authentication
Authentication in Expo and React Native apps - Expo Documentation
Expo AuthSession is a client-side package that helps you open a web browser or native modal to start the OAuth login flow.
🌐
Reddit
reddit.com › r/reactnative › expo auth google with web browser
r/reactnative on Reddit: Expo auth google with web browser
October 8, 2023 -

Is there any way to authenticate through Google using webview or expo-web-browser?

Because I don't want to touch the native files (ios - android)

Find elsewhere
🌐
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.
      » npm install expo-auth-session
    
Published   Dec 05, 2025
Version   7.0.10
Author   650 Industries, Inc.
🌐
Expo
auth.expo.io
Expo AuthSession Redirect Proxy
https://auth.expo.io/@<account-name>/<project-name> Due to web browser changes like WebKit's Tracking Prevention, the AuthSession proxy service may not work reliably in edge cases such as when a user's device is configured to block cookies or prevent cross-site tracking.
🌐
GitHub
gist.github.com › jdthorpe › aaa0d31a598f299a57e5c76535bf0690
expo-auth-session example · GitHub
I'm still facing blank page and an error after entering Google account login even if I use WebBrowser.maybeCompleteAuthSession();: Something went wrong trying to finish signing in. Please close this screen to go back to the app. 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.
🌐
Stack Overflow
stackoverflow.com › questions › 75263907 › how-to-handle-auth-with-webbrowser-openauthsessionasync-in-expo
react native - How to handle Auth with WebBrowser.openAuthSessionAsync in Expo? - Stack Overflow
I'm trying to figure out how to have access to any kind of info from the return, from cookies to query string on the URL as I have control over how my API handles the return, but I'm not being able to access any kind of info from the AuthSession. ... import { useEffect, useState } from "react" import { Button, View, Text } from "react-native" import * as WebBrowser from "expo-web-browser" import * as Linking from "expo-linking" export default () => { const [result, setResult] = useState<WebBrowser.WebBrowserAuthSessionResult | null>(null) useEffect(() => { console.log(result) }, [result]) cons
🌐
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.
🌐
Supabase
supabase.com › docs › guides › auth › quickstarts › with-expo-react-native-social-auth
Build a Social Auth App with Expo React Native | Supabase Docs
1 day ago - Use Expo to initialize an app called expo-social-auth with the standard template: ... npx expo install @supabase/supabase-js @react-native-async-storage/async-storage expo-secure-store expo-splash-screen · Now, create a helper file to initialize the Supabase client for both web and React Native platforms using platform-specific storage adapters: Expo SecureStore for mobile and AsyncStorage for web.
🌐
Descope
descope.com › blog › post › expo-authentication
Add Authentication to an Expo App With Descope
Now that you’ve been introduced to Expo and why Descope might be the right authentication solution for your Expo apps, we'll dive into the practical aspects of implementing Expo authentication with Descope. As a note, instead of following along with the instructions below, you can also take a look at our sample app. ... First, ensure you have Expo CLI installed. If not, you can install it using npm install -g expo-cli. Create a new Expo project using npx create-expo-app YourProjectName, and navigate to your project directory. Install necessary packages such as expo-web-browser, expo-auth-session, and others using npm or yarn.
🌐
GitHub
github.com › expo › expo › blob › master › docs › pages › versions › unversioned › sdk › webbrowser.md
expo/docs/pages/versions/unversioned/sdk/webbrowser.md at master · expo/expo
expo-web-browser provides access to the system's web browser and supports handling redirects. On iOS, it uses SFSafariViewController or SFAuthenticationSession, depending on the method you call, and on Android it uses ChromeCustomTabs.
Author   expo
🌐
GitHub
github.com › expo › expo › blob › master › packages › expo-web-browser › src › WebBrowser.ts
expo/packages/expo-web-browser/src/WebBrowser.ts at master · expo/expo
* If the error `ERR_WEB_BROWSER_REDIRECT` was thrown, it may mean that the parent window was · * reloaded before the auth was completed. In this case you'll need to close the child window manually. * * @platform web · */ export function maybeCompleteAuthSession( options: WebBrowserCompleteAuthSessionOptions = {} ): WebBrowserCompleteAuthSessionResult { if (ExponentWebBrowser.maybeCompleteAuthSession) { return ExponentWebBrowser.maybeCompleteAuthSession(options); } return { type: 'failed', message: 'Not supported on this platform' }; } ·
Author   expo
🌐
Expo Documentation
docs.expo.dev › router › advanced › authentication
Authentication in Expo Router - Expo Documentation
With Expo Router, all routes are always defined and accessible. You can use runtime logic to redirect users away from specific screens depending on whether they are authenticated. There are two different techniques for authenticating users within routes.
🌐
Snyk
snyk.io › advisor › expo-web-browser › expo-web-browser code examples
Top 5 expo-web-browser Code Examples | Snyk
if (!url.match(dataRegExp)) return; // Extract stringified user string out of the URL const [, data] = url.match(dataRegExp); const decodedData = JSON.parse(decodeURI(data)); const { client } = this.props; if (decodedData.tokens) { await setItem('accessToken', decodedData.tokens.accessToken); await setItem('refreshToken', decodedData.tokens.refreshToken); await authentication.doLogin(client); } if (Platform.OS === 'ios') { WebBrowser.dismissBrowser(); } }; EvanBacon / react-navigation-web-responsive-tabs-demo / screens / HomeScreen.js View on Github · function handleHelpPress() { WebBrowser.openBrowserAsync( 'https://docs.expo.io/versions/latest/workflow/up-and-running/#cant-see-your-changes', ); }