Flutter android 로그인

앱ID : 554156

안녕하세요. 현재 플러터로 카카오 로그인 연동을 개발중에 있는데
안드로이드에서 카카오톡 미설치시 로그인이 동작하지 않습니다.

한가지 특이사항으로는 멀티앱으로 개발중에 있어서 혹시 이때 따로 설정을 해줘야 하는 것이 있는지 궁금합니다
해시키는 gSy3L4ysJ8xxxxxxxxxx 로 등록한 상태입니다

AndroidManifest.xml

<activity
            android:name=".MainActivity"
            android:exported="true"
            android:launchMode="singleTop"
            android:taskAffinity=""
            android:theme="@style/LaunchTheme"
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
            android:hardwareAccelerated="true"
            android:windowSoftInputMode="adjustResize">
            <!-- Specifies an Android theme to apply to this Activity as soon as
                 the Android process has started. This theme is visible to the user
                 while the Flutter UI initializes. After that, this theme continues
                 to determine the Window background behind the Flutter UI. -->
            <meta-data
              android:name="io.flutter.embedding.android.NormalTheme"
              android:resource="@style/NormalTheme"
              />
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data
                    android:host="oauth"
                    android:scheme="kakaof185xxxxxxxxx" />
            </intent-filter>
        </activity>

안녕하세요.

로그인 관련 코드 블럭도 공유해주시겠어요? 카카오톡 미설치 시, 카카오계정로그인하도록 처리하셨나요?

안녕하세요

일반적으로 안드로이드 시스템에서 Activity는 해당 패키지 이름과 동일한 taskAffinity가 부여되고, 같은 값으로 설정된 Activity들은 동일한 Task 내에서 생성됩니다. (launchMode 등을 통해 다른 Task로 할당하는 경우 제외)

그런데 최근에 플러터 프로젝트를 생성하면 android:taskAffinity="" 로 설정되는 것을 확인했고, 이로 인해 정상적으로 동작하지 못하고 있는 것으로 보입니다. taskAffinity 설정을 제거하시면 정상적으로 동작할 것으로 보여요.

1개의 좋아요

이렇게 로그인 처리하고 있습니다

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

알려주신 내용으로 해결했습니다! 감사합니다!

1개의 좋아요