ALIOTHX Developers
ALIOTHXMANAGER
  • 😈DEMO App 설치
  • 크로스플랫폼 개발환경
    • ⚙️Flutter 개발환경
    • 🧑‍💻Flutter 시작하기
    • 📲폰에서 실행
    • 개발가이드
    • 🚀솔루션 설치
    • 🚦코드가이드
      • 명명 규칙및 주석처리
      • 코딩 컨벤션
      • 디렉토리 생성및 관리
      • 페이지 작성
    • 🏭Flutter 아키텍쳐
      • 채널링
      • 웹뷰
        • 웹뷰 설정
        • 웹뷰 연동
      • 보안 (Security)
        • 대칭키 암호알고리즘
        • 비대칭키 암호알고리즘
        • 메시지 다이제스트
        • 탈옥및 루팅 탐지및 차단
        • 앱 위/변조 탐지및 차단
        • 코드 난독화
    • 🖥️관리시스템
    • 🎆협업도구
  • UIUX 컴포넌트
    • UI/UX
      • 테마 적용
      • 화면방향전환
      • 토스트 (Toast)
      • 버튼 (Button)
      • 텍스트 (Text)
      • 탭바 (TabBar)
      • 이미지뷰 (ImageView)
      • 카메라/이미지
      • 페이지 트랜지션
      • 입력필드 (TextField)
      • 체크박스 (CheckBox)
      • 라디오버튼 (RadioButton)
      • 로딩바 (Loading Indicator)
      • 바텀시트 (BottomSheet)
      • 리스트뷰 (ListView)
      • 슬리버 (Sliver)
      • 사운드 (Sound)
      • 애니메이션 (Animation)
      • 위치 및 정렬
      • 커스텀 키보드
      • 카드 (Card)
      • 토글 버튼 (Toggle Button)
      • 다이얼로그 (Dialog)
      • QR코드
      • 페이지뷰 (PageView)
  • Common 컴포넌트
    • 공통모듈
      • 데이터통신과 JSON 파싱
      • 인증 연동
      • 채널링
      • 네비게이션
      • 푸시 메시지
      • SMS 인증
      • 예외처리
  • Security 컴포넌트
    • 보안모듈
      • 메시지 다이제스트
      • 암/복호화
  • Option 컴포넌트
    • 옵션모듈
      • 동영상 플레이어
      • 유튜브 연동
      • 차트
      • SNS 공유
      • 지도
      • 로컬 DB
  • 🎁라이센스및 기술지원
  • 🏢고객사
Powered by GitBook
On this page
  • 이메일/비밀번호 인증
  • SNS 로그인
  • Google
  • KakaoTalk
  • Naver
  • Apple
  1. Common 컴포넌트
  2. 공통모듈

인증 연동

아이디/비밀번호 인증 및 생체로그인, 애플로그인, 구글로그인, 카카오톡 로그인, 네이버 로그인 등 다양한 로그인 방법을 샘플소스와 함께 안내합니다.

Previous데이터통신과 JSON 파싱Next채널링

Last updated 1 year ago

인증 및 연동은 모바일 애플리케이션에서 매우 중요한 부분입니다. Flutter 애플리케이션에서 다양한 인증 방법을 통해 로그인하는 방법을 안내합니다. 이메일/비밀번호 인증, Google 로그인, KakaoTalk 로그인, Naver 로그인 및 Apple 로그인에 대해 알아보세요.

이메일/비밀번호 인증

SNS 로그인

Google

pubspec.yaml에 google_sign_in 패키지를 추가하세요.

yamlCopy codedependencies:
  google_sign_in: ^5.7.0

구현 방법

GoogleSignIn 클래스를 사용하여 Google 로그인을 처리하세요. 코드에서 _loginWithGoogle 메서드를 확인하세요.

Future<void> _loginWithGoogle() async {
    try {
      await _googleSignIn.signIn();
      if (await GoogleSignIn().isSignedIn()) {
        UiUxData.navigatorKey!.currentContext
            ?.read<AuthService>()
            .isAuthenticated = true;
        widget.onLoginResult?.call(true);
        print('구글 로그인 성공');
      } else {
        print('구글 로그인 실패');
      }
    } catch (error) {
      print(error);
    }
  }

KakaoTalk

pubspec.yaml에 kakao_flutter_sdk 패키지를 추가하세요.

yamlCopy codedependencies:
  kakao_flutter_sdk: ^0.10.0

구현 방법

kakao_flutter_sdk 패키지의 UserApi 클래스를 사용하여 KakaoTalk 로그인을 처리하세요. 제공된 코드의 _loginWithKakao 메서드를 확인하세요.

Future<void> _loginWithKakao() async {
    if (await isKakaoTalkInstalled()) {
      try {
        await UserApi.instance.loginWithKakaoTalk();
        UiUxData.navigatorKey!.currentContext
            ?.read<AuthService>()
            .isAuthenticated = true;
        widget.onLoginResult?.call(true);
        print('카카오톡으로 로그인 성공');
      } catch (error) {
        print('카카오톡으로 로그인 실패 $error');

        if (error is PlatformException && error.code == 'CANCELED') {
          return;
        }

        try {
          await UserApi.instance.loginWithKakaoAccount();
          UiUxData.navigatorKey!.currentContext
              ?.read<AuthService>()
              .isAuthenticated = true;
          widget.onLoginResult?.call(true);
          print('카카오계정으로 로그인 성공');
        } catch (error) {
          print('카카오계정으로 로그인 실패 $error');
        }
      }
    } else {
      try {
        await UserApi.instance.loginWithKakaoAccount();
        UiUxData.navigatorKey!.currentContext
            ?.read<AuthService>()
            .isAuthenticated = true;
        widget.onLoginResult?.call(true);
        print('카카오계정으로 로그인 성공');
      } catch (error) {
        print('카카오계정으로 로그인 실패 $error');
      }
    }
  }

Naver

pubspec.yaml에 flutter_naver_login 패키지를 추가하세요.

yamlCopy codedependencies:
  flutter_naver_login: ^4.0.0

구현 방법

FlutterNaverLogin 클래스를 사용하여 Naver 로그인을 처리하세요. 코드에서 _loginWithNaver 메서드를 참조하세요.

Future<void> _loginWithNaver() async {
    try {
      await FlutterNaverLogin.logIn();
    } catch (error) {
      print(error);
    }

    NaverAccessToken res = await FlutterNaverLogin.currentAccessToken;

    if (res.accessToken != '') {
      UiUxData.navigatorKey!.currentContext
          ?.read<AuthService>()
          .isAuthenticated = true;
      widget.onLoginResult?.call(true);
      print('네이버 로그인 성공');
    } else if (res.accessToken == '') {
      print('네이버 로그인 실패');
    }
  }

Apple

pubspec.yaml에 sign_in_with_apple 패키지를 추가하세요.

yamlCopy codedependencies:
  sign_in_with_apple: ^3.0.0

구현 방법

SignInWithApple 클래스를 사용하여 Apple 로그인을 처리하세요. 코드에서 _loginWithApple 메서드를 확인하세요.

Future<UserCredential> _loginWithApple() async {
    final rawNonce = generateNonce();
    final nonce = sha256ofString(rawNonce);

    final appleCredential = await SignInWithApple.getAppleIDCredential(
      scopes: [
        AppleIDAuthorizationScopes.email,
        AppleIDAuthorizationScopes.fullName,
      ],
      webAuthenticationOptions: WebAuthenticationOptions(
        clientId: 'com.dubhesoft.aliothv2',
        redirectUri: Uri.parse(
            'https://flutter-sign-in-dc1ef.firebaseapp.com/__/auth/handler'),
      ),
      nonce: nonce,
    );

    final oauthCredential = OAuthProvider("apple.com").credential(
      idToken: appleCredential.identityToken,
      rawNonce: rawNonce,
    );

    return await FirebaseAuth.instance.signInWithCredential(oauthCredential);
  }

Flutter 애플리케이션에서 다양한 인증 방법을 통해 로그인하는 방법을 제공합니다. 코드를 특정 사용 사례에 맞게 조정하고 각 라이브러리에서 제공하는 추가 설정 지침을 따라 앱 개발에 활용해보세요.

Page cover image