Browse Source

Google Login 설정 - 안드로이드

goodboy 6 years ago
parent
commit
3b41a6c8ab

+ 5 - 0
android/app/build.gradle

@@ -138,6 +138,7 @@ android {
         targetSdkVersion rootProject.ext.targetSdkVersion
         versionCode 1
         versionName "1.0"
+        multiDexEnabled true
     }
     splits {
         abi {
@@ -217,9 +218,13 @@ dependencies {
       implementation jscFlavor
     }
     implementation 'com.facebook.android:facebook-android-sdk:[4,5)'
+    def multidex_version = "2.0.1";
+    implementation "androidx.multidex:multidex:$multidex_version"
      
 }
 
+apply plugin: 'com.google.gms.google-services'
+
 // Run this once to be able to run the application with BUCK
 // puts all compile dependencies into folder libs for BUCK to use
 task copyDownloadableDepsToLibs(type: Copy) {

+ 2 - 2
android/app/src/main/java/org/seonsujoa/emptyapp/MainApplication.java

@@ -15,10 +15,10 @@ import com.corbt.keepawake.KCKeepAwakePackage;
 import com.facebook.react.ReactNativeHost;
 import com.facebook.react.ReactPackage;
 import com.facebook.soloader.SoLoader;
-
+import androidx.multidex.MultiDexApplication;
 import java.util.List;
 
-public class MainApplication extends Application implements ReactApplication {
+public class MainApplication extends MultiDexApplication implements ReactApplication {
 
   private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
     @Override

+ 3 - 0
android/build.gradle

@@ -7,6 +7,7 @@ buildscript {
         compileSdkVersion = 28
         targetSdkVersion = 28
         supportLibVersion = "28.0.0"
+        googlePlayServicesAuthVersion = "17.0.0"
     }
     repositories {
         google()
@@ -14,6 +15,8 @@ buildscript {
     }
     dependencies {
         classpath("com.android.tools.build:gradle:3.4.1")
+        classpath("com.google.gms:google-services:4.2.0")
+        
 
         // NOTE: Do not place your application dependencies here; they belong
         // in the individual module build.gradle files

+ 56 - 23
src/pages/_1_Login.js

@@ -1,10 +1,12 @@
-import React from 'react';
+import React, {useState} from 'react';
 import { LoginButton, AccessToken } from 'react-native-fbsdk';
 import RNKakao from 'react-native-kakao';
+import { NaverLogin, getProfile } from 'react-native-naver-login';
+import { GoogleSignin, GoogleSigninButton, statusCodes } from 'react-native-google-signin';
+
 import C from 'rn-class'
 C.addColor("#03cf5d", "color-naver");
 
-import { NaverLogin, getProfile } from 'react-native-naver-login';
 const initials = {
   kConsumerKey: 'VWv4bOdB5Bf07a26eJ5h',
   kConsumerSecret: 'pBASnpI7X5',
@@ -12,49 +14,75 @@ const initials = {
   kServiceAppUrlScheme: 'dooboolaburlscheme', // only for iOS
 };
 
-
+GoogleSignin.configure();
 
 export default (props)=>{
 
+  const [userInfo, setUserInfo] = useState(null);
+  
+  const googoleSignIn = async () => {
+    
+    try {
+      await GoogleSignin.hasPlayServices();
+      const result = await GoogleSignin.signIn();
+      
+      console.log(result);
+    } 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)
+      }
+    }
+  };
+
     const authLogin = () => {
         props.navigation.navigate('AcceptTerms');
     }
     const kakaoLogin = async () => {
         try {
           const result = await RNKakao.login();
-          this.setState({
-            userInfo: JSON.stringify(result)
-          });
+          
+            console.log(result);
         } catch (e) {
-          this.setState({
-            userInfo: `Error: ${e}`
-          });
+          
+            console.log(`Error: ${e}`);
+          
         }
       }
     
       const kakaoLogout = async () => {
         try {
           const result = await RNKakao.logout();
-          this.setState({
-            userInfo: JSON.stringify(result)
-          });
+          
+            
+            console.log(result);
+          
         } catch (e) {
-          this.setState({
-            userInfo: `Error: ${e}`
-          });
+          
+          console.log(`Error: ${e}`);
+          
         }
       }
     
       const  getUserInfo = async () => {
         try {
           const result = await RNKakao.userInfo();
-          this.setState({
-            userInfo: JSON.stringify(result)
-          });
+          
+          console.log(result);
+          
         } catch (e) {
-          this.setState({
-            userInfo: `Error: ${e}`
-          });
+          
+          console.log(`Error: ${e}`);
+          
         }
       }
 
@@ -118,8 +146,13 @@ export default (props)=>{
 
 
 
-                <C.EL.Button btncls="bgc-color-google-plus " title="Google"/>
-
+                <C.EL.Button btncls="bgc-color-google-plus " title="Google" onPress={googoleSignIn} />
+                {/* <GoogleSigninButton
+                  style={{ width: 192, height: 48 }}
+                  size={GoogleSigninButton.Size.Wide}
+                  color={GoogleSigninButton.Color.Dark}
+                  onPress={googoleSignIn}
+                  disabled={false} /> */}
 
                 <C.EL.Button btncls="bgc-color-kakao " tcls="color-kakaotext" title="Kakao" onPress={kakaoLogin}/>