[flutter] kakao login

sanghun park·2023년 2월 12일
0
post-thumbnail

안드로이드 카카오로그인 구현

카카오 로그인 기능을 추가하기 위해서는 kakao developers 사이트에 들어가서 내 어플리케이션 등록을 해야한다.
https://developers.kakao.com/

등록을 한 후, 플랫폼 등록이라는 설정이 있는데, 안드로이드 플랫폼 등록할때 키해시를 넣는 곳이 있다. 여기부분에는 터미널에 아래 명령어를 치면 얻을 수 있음.

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -storepass android -keypass android | openssl sha1 -binary | openssl base64

그리고 위의 사진과 같이 카카오로그인 on을 시켜야 함.


이제 androidMenifest.xml 파일에 추가해준다.

<activity android:name="com.kakao.sdk.flutter.AuthCodeCustomTabsActivity">
          <intent-filter android:label="flutter_web_auth">
              <action android:name="android.intent.action.VIEW" />
              <category android:name="android.intent.category.DEFAULT" />
              <category android:name="android.intent.category.BROWSABLE" />
              <data android:scheme="kakao네이티브앱키" android:host="oauth"/>
          </intent-filter>
        </activity>

Main.dart에 추가

Future<void> main() async {
  KakaoSdk.init(nativeAppKey: '네이티브 앱 키');
  runApp(const MyApp());
}

네이티브앱키는 카카오 문서에 앱 키 항목을 누르면 나옴


ios 설정

Information Property List 에 KAKAO_APP_KEY 항목을 추가하고 value에 kakao{네이티브 앱 키}를 입력해주면 됨. 물론 플랫폼 등록도 해줘야함


  • 카카오 공식문서에 나와있는 예제 코드
kakaoLogin() async {
    if (await isKakaoTalkInstalled()) {
      try {
        await UserApi.instance.loginWithKakaoTalk();

        print('카카오톡으로 로그인 성공');
      } catch (error) {
        print('카카오톡으로 로그인 실패 $error');

        // 사용자가 카카오톡 설치 후 디바이스 권한 요청 화면에서 로그인을 취소한 경우,
        // 의도적인 로그인 취소로 보고 카카오계정으로 로그인 시도 없이 로그인 취소로 처리 (예: 뒤로 가기)
        if (error is PlatformException && error.code == 'CANCELED') {
          return;
        }
        // 카카오톡에 연결된 카카오계정이 없는 경우, 카카오계정으로 로그인
        try {
          await UserApi.instance.loginWithKakaoAccount();
          print('카카오계정으로 로그인 성공');
        } catch (error) {
          print('카카오계정으로 로그인 실패 $error');
        }
      }
    } else {
      try {
        await UserApi.instance.loginWithKakaoAccount();

        print('카카오계정으로 로그인 성공');
      } catch (error) {
        print('카카오계정으로 로그인 실패 $error');
      }
    }
  }

버튼을 하나 생성하고 이 함수를 실행시켰더니 동의항목에서 되지 않았다.
에러 메세지 :

Local module descriptor class for com.google.android.gms.providerinstaller.dynamite not found.

구글링을 여러차례 시도해보고 그냥 애뮬에 있는 어플 삭제하고 다시돌려보자 해서 다시돌렸더니 정상 작동 됨..
막막할때는 그냥 어플을 지웠다가 다시 실행시키는것도 하나의 방법인 것 같다.
뭔가 찜찜한 성공이긴 하지만...

이제 저 예제코드에 로그인을 성공했을때 등 여러 조건들을 붙혀서 사용하면 될것 같다.

profile
개발자를 꿈꾸는 학생

0개의 댓글