Browse Source

구글 로그인 완료 .

자유해결사 6 years ago
parent
commit
91f4c52c81
2 changed files with 52 additions and 11 deletions
  1. 2 2
      src/pages/_1_Login.js
  2. 50 9
      src/provider/Auth.js

+ 2 - 2
src/pages/_1_Login.js

@@ -22,9 +22,9 @@ export default (props)=>{
     let onlogin = async (loginInfo, bfirst )=>{
         if(bfirst){
           props.navigation.navigate('AcceptTerms');
-        }else{ 
+        }else{   
           props.navigation.navigate('Root');
-        }
+        } 
     }
     return (
         <C.View cls="jc-sa ai-c flx1 bgc-color-white"> 

+ 50 - 9
src/provider/Auth.js

@@ -21,12 +21,16 @@ const initials = {
 class Lm  {
     logout = async ()=>{
         let result = await  LoginManager.logOut();
-        // console.log(result); 
+        try {
+            result = await GoogleSignin.revokeAccess();
+            result = await GoogleSignin.signOut();
+        } catch (error) {
+        }
+
         result = await RNKakao.logout();
-        // console.log(result); 
         
         result = await NaverLogin.logout();
-        // console.log(result); 
+        
         AsyncStorage.removeItem("@naverToken");
         return true;
     }
@@ -40,6 +44,7 @@ export default (props)=>{
     let callLogin = async (bfirst)=>{
         let rtn = {iface : null, token : null, id : null };
         let fbData = await AccessToken.getCurrentAccessToken(); // 페이스북 
+        console.log("fbData >>>: " , fbData); 
         if (fbData){
             rtn.iface = "facebook"
             rtn.id = fbData.userID;  
@@ -47,15 +52,28 @@ export default (props)=>{
             props.onLogin && props.onLogin(rtn, bfirst); 
             return;
         }
+        
+        if(GoogleSignin.isSignedIn()){
+            try {
+                rtn.iface = "google";
+                rtn.token = (await GoogleSignin.getTokens()).accessToken; 
+                rtn.id = (await GoogleSignin.getCurrentUser()).user.id; 
+            } catch (error) {}
+            props.onLogin && props.onLogin(rtn, bfirst);  
+            return;   
+        }
+
 
         let naverToken  = await  AsyncStorage.getItem("@naverToken");
         if(naverToken){
             let profile = await getProfile(naverToken);
-            rtn.iface = "naver";
-            rtn.id = profile.response.id;
-            rtn.token =  naverToken;
-            props.onLogin && props.onLogin(rtn, bfirst); 
-            return ;
+            if(profile.resultcode =='00') {
+                rtn.iface = "naver";
+                rtn.id = profile.response.id;
+                rtn.token =  naverToken;
+                props.onLogin && props.onLogin(rtn, bfirst); 
+                return ;
+            } 
         }
 
         try {
@@ -67,6 +85,7 @@ export default (props)=>{
                 props.onLogin && props.onLogin(rtn, bfirst); 
                 return ;
             }
+
         } catch (error) {}
 
        
@@ -83,7 +102,29 @@ export default (props)=>{
         }
     }
     let googoleSignIn = async () =>{
-        
+        GoogleSignin.configure();
+        try {
+            if(await GoogleSignin.hasPlayServices()){
+                const result = await GoogleSignin.signIn();  
+                if(result){
+                    callLogin(true);
+                }
+            }
+        } catch (error) {
+            if (error.code === statusCodes.SIGN_IN_CANCELLED) {
+                    // user cancelled the login flow
+                    console.log('cancel',error);
+                } else if (error.code === statusCodes.IN_PROGRESS) {
+                    // operation (f.e. sign in) is in progress already
+                    console.log('progress',error);
+                } else if (error.code === statusCodes.PLAY_SERVICES_NOT_AVAILABLE) {
+                    // play services not available or outdated
+                    console.log('service not available',error);
+                } else {
+                    // some other error happened
+                    console.log(error)
+                }
+        }
     }
     let kakaoLogin = async () =>{
         const result = await RNKakao.login();