diff --git a/App.js b/App.js index b0c4ea6..4efbe65 100644 --- a/App.js +++ b/App.js @@ -4,6 +4,7 @@ import { NavigationContainer } from '@react-navigation/native'; import { createNativeStackNavigator } from '@react-navigation/native-stack'; import { createBottomTabNavigator } from '@react-navigation/bottom-tabs'; import { ActivityIndicator, View, Text, TouchableOpacity } from 'react-native'; +import * as WebBrowser from 'expo-web-browser'; import { ThemeProvider, useTheme } from './src/services/ThemeContext'; import DatabaseService from './src/services/DatabaseService'; import LoginScreen from './src/screens/LoginScreen'; @@ -14,6 +15,9 @@ import SearchScreen from './src/screens/SearchScreen'; import CollectionsScreen from './src/screens/AlbumsScreen'; import SettingsScreen from './src/screens/SettingsScreen'; +// Required for OAuth deep link redirect to close the browser and return to the app +WebBrowser.maybeCompleteAuthSession(); + const Stack = createNativeStackNavigator(); const Tab = createBottomTabNavigator(); diff --git a/src/AUTH/GoogleAUTH.js b/src/AUTH/GoogleAUTH.js index 9b624d8..64f80b2 100644 --- a/src/AUTH/GoogleAUTH.js +++ b/src/AUTH/GoogleAUTH.js @@ -6,10 +6,9 @@ WebBrowser.maybeCompleteAuthSession(); const GOOGLE_CLIENT_ID = '313090284964-rgq1u7np6ogucu9o97s134n5nc6nj7kf.apps.googleusercontent.com'; -// makeRedirectUri uses the scheme from app.json ("media-aggregation") to build -// the deep link URI that Android will route back into the app after OAuth. -// The resulting URI is: media-aggregation:// (registered in Google Cloud Console) -// For Expo Go dev testing the loopback http://localhost is used instead. +// Builds the deep link redirect URI from the scheme defined in app.json ("media-aggregation"). +// On an Android APK this resolves to: media-aggregation:// +// Register this URI in Google Cloud Console → Authorized redirect URIs. const REDIRECT_URI = AuthSession.makeRedirectUri({ scheme: 'media-aggregation' }); const GOOGLE_DISCOVERY = { @@ -91,7 +90,7 @@ class GoogleAUTH extends AuthServiceBase { return { success: true, accessToken: this.accessToken, - refreshToken: null, + refreshToken: this.refreshToken, email: this.email, }; } catch (error) {