@@ -44,41 +44,33 @@ function Login({ logoutCallback, onSuccess }: LoginProps) {
4444 const driveService = AppMgr . getInstance ( ) . driveService ;
4545 const loginLogger = logger . child ( { module : 'login' } ) ;
4646
47- const SCOPE = 'https://mail.google.com https:// www.googleapis.com/auth/drive' ;
47+ const SCOPE = 'https://www.googleapis.com/auth/drive.file ' ;
4848
4949 const googleSignIn = useGoogleLogin ( {
5050 scope : SCOPE ,
5151 flow : 'auth-code' ,
5252 onSuccess : ( codeResponse ) => {
53- if ( codeResponse . scope . split ( ' ' ) . includes ( 'https://mail.google.com/' ) ) {
54- setIsLogin ( true ) ;
55- authService . isLogin = true ;
56- new Promise < void > ( ( resolve ) => {
57- authService . setCode ( codeResponse . code ) ;
58- authService . getRefreshToken ( ) . then ( async ( token ) => {
59- setUser ( ( prev ) => ( {
60- ...prev ,
61- access_token : token . access_token ,
62- refresh_token : token . refresh_token ,
63- expire_in : token . expires_in ,
64- } ) ) ;
65- driveService . setAccessToken ( token . access_token ) ;
66- } ) ;
67-
68- if ( user . refresh_token ) {
69- // wait for the refresh token to arrive.
70- resolve ( ) ;
71- }
72- } ) . then ( ( ) => {
73- setTimeout ( ( ) => {
74- authService . getAccessToken ( ) . then ( ( token ) => {
75- loginLogger . debug ( 'Access Token:' , token ) ;
76- } ) ;
77- } , 1000 ) ;
53+ setIsLogin ( true ) ;
54+ authService . isLogin = true ;
55+ new Promise < void > ( ( resolve ) => {
56+ authService . setCode ( codeResponse . code ) ;
57+ authService . getRefreshToken ( ) . then ( async ( token ) => {
58+ setUser ( ( prev ) => ( {
59+ ...prev ,
60+ access_token : token . access_token ,
61+ refresh_token : token . refresh_token ,
62+ expire_in : token . expires_in ,
63+ } ) ) ;
64+ driveService . setAccessToken ( token . access_token ) ;
65+ resolve ( ) ;
7866 } ) ;
79- } else {
80- loginLogger . error ( 'please give required permissions to the app.' ) ;
81- }
67+ } ) . then ( ( ) => {
68+ setTimeout ( ( ) => {
69+ authService . getAccessToken ( ) . then ( ( token ) => {
70+ loginLogger . debug ( 'Access Token:' , token ) ;
71+ } ) ;
72+ } , 1000 ) ;
73+ } ) ;
8274 } ,
8375 onError : ( error ) => {
8476 if ( error instanceof Error ) {
@@ -105,7 +97,7 @@ function Login({ logoutCallback, onSuccess }: LoginProps) {
10597 useEffect ( ( ) => {
10698 if ( user . access_token && userProfile . email === '' ) {
10799 fetch (
108- `https://www.googleapis.com/oauth2/v1/userinfo?access_token= ${ user . access_token } ` ,
100+ `https://www.googleapis.com/drive/v3/about?fields= user` ,
109101 {
110102 headers : {
111103 Authorization : `Bearer ${ user . access_token } ` ,
@@ -115,8 +107,16 @@ function Login({ logoutCallback, onSuccess }: LoginProps) {
115107 )
116108 . then ( ( res ) => res . json ( ) )
117109 . then ( async ( data ) => {
118- setUserProfile ( data ) ;
119- authService . userProfile = data ;
110+ // Map Drive About API response to UserProfile format
111+ const profile : UserProfile = {
112+ id : data . user ?. permissionId || data . user ?. emailAddress || '' ,
113+ email : data . user ?. emailAddress || '' ,
114+ name : data . user ?. displayName || '' ,
115+ picture : data . user ?. photoLink || '' ,
116+ verified_email : true , // Drive API doesn't provide this, assume verified
117+ } ;
118+ setUserProfile ( profile ) ;
119+ authService . userProfile = profile ;
120120 // check if XRPCode folder exists, if not create it
121121 try {
122122 const folder = await driveService . findFolderByName ( Constants . XRPCODE ) ;
@@ -130,7 +130,7 @@ function Login({ logoutCallback, onSuccess }: LoginProps) {
130130 loginLogger . error ( `Error checking or creating XRPCode folder: ${ String ( error ) } ` ) ;
131131 }
132132 }
133- onSuccess ( data ) ;
133+ onSuccess ( profile ) ;
134134 } )
135135 . catch ( ( err ) => loginLogger . error ( 'Error fetching user profile:' , err ) ) ;
136136 }
0 commit comments