현재 안드로이드 와 ios 애뮬레이터 동작 중 로그인 기능 관련하여 문의 드립니다

flutter 3.3.9 버전 입니다.

기존에는 안드로이드를 이용하여 카카오 로그인 시 웹로그인이 정상적으로 적용이 되어 로그인이 되었습니다.

그 후 ios 카카오 로그인 연동 이 후 안드로이드 애뮬레이터 로그인을 진행 할시

“네이티브키” links are blocked 라는 문구가 뜨고 있습니다… 로그나 이런 부분은 뜨는게 없어 확인 할 길이 없어 문의 드립니다.

ios는 정상적으로 카카오 로그인이 됩니다.

문의 답변 한 번 부탁드리겠습니다.

감사합니다!

안녕하세요.

아래 Android Flutter 프로젝트 설정 내용이 적용되셨는지 확인 부탁드립니다.

Flutter | Kakao Developers Flutter

넷 해당 프로젝 설정 내용이 적용 되어 있습니다!

AndroidManifest.xml 해당 파일에도 적용을 하였습니다.

ios연동 이후 부터 안드로이드 기기에서 카카오 웹 로그인 부분이 문제가 발생된 상태입니다.

보통 프로젝트 구성상 이슈가 있을 때, 오동작하게 되는데요
아래 문서에서 샘플코드 구성을 참고부탁드립니다.

Kakao Developers

답변해주셔서 감사합니다

현재 해당 오류 관련하여

PlatformException(REDIRECT_URL_MISMATCH, Expected: {카카오nativekey}://oauth, Actual: null, null, null)

문구가 발생하여 혹시 이와 관련해서도 답변 한번 부탁드려도 괜찮으실가요?

1개의 좋아요

안녕하세요.

확인을 위해 앱 ID 부탁드립니다.


앱ID
https://developers.kakao.com/ 의 내 애플리케이션>앱 설정>요약 정보 : 기본정보에 있는 앱 ID
숫자로된 ID 입니다

ex) 123456

넷 감사합니다

ID : 803845

입니다!

AndroidManifest.xml , SDK 초기화 및 카카오로그인 코드 공유 부탁드립니다.

네 AndroidManifest.xml 코드 중 카카오 부분입니다!

<activity
            android:name="com.kakao.sdk.flutter.AuthCodeCustomTabsActivity"
            android:exported="true">
            <intent-filter android:label="flutter_web_auth">
                <action android:name="android.intent.action.VIEW" />
                <action android:name="android.intent.action.SEND" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="text/plain" />
                <category android:name="android.intent.category.BROWSABLE" />

                <!-- Redirect URI, "kakao${YOUR_NATIVE_APP_KEY}://oauth" 형식 -->
                <data android:scheme="카카오네이티브키" android:host="oauth"/>
                <data android:host="kakaolink" android:scheme="카카오네이티브키" />
            </intent-filter>
        </activity>

SDK 초기화 코드입니다.

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  KakaoSdk.init(nativeAppKey:KAKAO_NATIVE_APP_KEY);
  MobileAds.instance.initialize();      // 모바일 광고 SDK 초기화
  await Firebase.initializeApp(
    options: DefaultFirebaseOptions.currentPlatform,
  );
  runApp(const MyApp());
}

현재 SDK초기화 코드를 ios 폴더의 AppDelegate.swift 에도 사용중에 있습니다.

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool {
    KakaoSDK.initSDK(appKey: "카카오네이티브키")
    FirebaseApp.configure()
    GeneratedPluginRegistrant.register(with: self)
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  }
}

로그인 코드 입니다.

try {
        if(isInstalled){
          OAuthToken token = await UserApi.instance.loginWithKakaoTalk();
          print('로그인 성공 ${token.accessToken}');
          Get.offAll(IntroScreen());
        }else{
          OAuthToken token = await UserApi.instance.loginWithKakaoAccount();
          print('로그인 성공 ${token.accessToken}');
          Get.offAll(IntroScreen());
        }
        user = await kakao.UserApi.instance.me();
        final customToken = await FirebaseService().createCustomToken({
          'uid': user!.id.toString(),
          'displayName': user!.kakaoAccount?.profile?.nickname,
          'email': user!.kakaoAccount!.email!,
          'photoURL': user!.kakaoAccount!.profile!.profileImageUrl,
        });

        await FirebaseAuth.instance.signInWithCustomToken(customToken);
        var currentUser = await FirebaseService.findUserByEmail(
            user!.kakaoAccount!.email!);

        if (currentUser == null) {
          await FirebaseAuth.instance.signInWithCustomToken(customToken);
          EasyLoading.showInfo("회원가입 진행 필요");
          await FirebaseFirestore.instance
              .collection("users")
              .doc(user!.kakaoAccount!.email!)
              .set({
            "email": user!.kakaoAccount!.email!,
            "provider": "kakao",
            "createdAt": DateTime.now(),
            "loggedAt": DateTime.now(),
            "name": user!.kakaoAccount!.profile!.nickname,
            "profileImage": user!.kakaoAccount!.profile!.profileImageUrl,
          });
          currentUser = await FirebaseService.findUserByEmail(user!.kakaoAccount!.email!);
          Get.offAll(() => privateSettingScreen());
        }else{
          UserService.to.currentUser.value = currentUser;
          Get.offAll(() => mainScreen());
        }
      } catch (error) {
        print('로그인 실패 $error');
        Get.offAll(() => LoginScreen());
      }

감사합니다!

AndroidManifest.xml 에서 AuthCodeCustomTabsActivity 설정 확인 부탁드립니다.

가이드와 다르게 설정되어 있습니다.
다른 부분도 샘플코드와 비교 검토 부탁드립니다.

대표적으로 잘못된 설정값

<data android:mimeType="text/plain" />
1개의 좋아요

너무 감사드립니다… ㅠㅠ

위 값을 제거 하고 빌드하여 해당 오류 해결 되었습니다.

감사합니다!