본문 바로가기

코딩/코딩에서 중요한 개념들

Flutter - supabase 회원가입 로직 구현 할 때 배웠던 개념들

반응형

 

 

Flutter 로 Supabase 를 이용해서 회원가입 로직을 구현 해보았습니다. 

 

 

문제 해결 목표 

원래 목표는 소셜 로그인 구글과 애플을 안드로이드, IOS 에 실행시키는 것이 목표였습니다. 

하지만 결국 email - password로 왔네요. 2월에는 email- password로 하고 이후에 다시 소셜 로그인을 추가를 할 예정입니다. 

 

 

 

문제 해결 과정에서 배웠던 개념들 

 

 

1. 안드로이드 - Mainifest , IOS - Inpo.Plist

 

안드로이드와 IOS 의 권한 부분에 대해서 배웠습니다. 

Flutter는 하나의 코드로 여러 플랫폼 구동이 가능한 프레임 워크이지만  결국 Flutter는 네이티브가 아닙니다. 

여기서 네이티브는 안드로이드, IOS  같은 OS 개념입니다. 

 

결국 각 OS에 맞게 권한 설정을 해줘야 합니다. 이러한 부분은 위에 있는 안드로이드 -Mainifest, IOS - Inpo.Plist 파일에서 설정 가능합니다. 

 

2. Deeplink 

위에 있는 각 OS 권한 설정에 연장선에 있는 기능입니다. Deeplink는  A앱에서 링크를 통해 B앱의 특정 페이지로 갈 수 있는 기능을 의미합니다. 네이버 블로그앱(A앱)에서 맛집을 검색하고 그 맛집을 가기 위해 주소를 클릭하면 네이버 지도앱(B앱)으로 넘어가는 경우가 바로 Deeplink 기능입니다. 

 

Supabase에서는 Email 로그인시 Email confirm 링크, 소셜로그인에서는 로그인 성공 후 돌아오는 페이지 설정 등등에 쓰이고 있습니다. 

 

Deeplink의 구성은 scheme / host/path 로 이루어져 있습니다. 

scheme는 해당 앱의 특성을 잘 나타내게 만들면 됩니다. 저는 mymoneytrackerapp으로 설정했습니다. 

 

각 OS에 권한을 부여할 때 는 scheme만 입력해도 그 scheme에 따라서 host/path 페이지도 인식하게 됩니다. 

 

 

안드로이드 구성 

  <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <!-- Accepts URIs that begin with YOUR_SCHEME://YOUR_HOST -->
        <data
          android:scheme="mymoneytrackerapp"
        
           />
      </intent-filter>

 

IOS

	<key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleTypeRole</key>
    <string>Editor</string>
    <key>CFBundleURLSchemes</key>
    <array>

      <string>mymoneytrackerapp</string>
    </array>
  </dict>

 

 

supabae 

각 OS 별로 scheme를 인식해서 유저가 회원가입 신청 후 confirm 이메일 링크를 클릭하면 다시 해당 앱으로 돌아와 로그인 진행이 완료됩니다. 

 

mymoneytrackerapp:://redirect/main?firstLogin=true

를 deeplink로 만들었습니다. 

 

권한 설정을 할 때는 scheme만 입력해도 됩니다. 

 

scheme : mymoneytracerapp:// 

host :  redirect

pat:  main

query : firstLogin=true

 

 

3. 안드로이드 SHA-1 보안코드 기기와 구글플레이가 다르다. 

 

supabase 로그인을 진행하면서 IOS에서는 작동하는데 안드로이드에서는 로그인이 안되는 문제를 겪었습니다. 

그 이유는 다음과 같습니다. 

 

구글 클라우드 API를 통해서 안드로이드 Oauth 만들 때 SHA 1 보안 코드가 필요합니다. 

안드로이드는 앱 자체적으로 SHA 1  보안 코드를 가지고 있고,  앱이 구글 플레이에 정식 등록이 되고 나면 생기는 SHA 1 보안코드가 있습니다. 

 

즉 개발 할 때는 앱 자체적인 SHA 1 로 로그인 기능을 테스트 하고, 구글 플레이 출시 이후에는 구글 플레이 콘솔 페이지에 있는 SHA 1 보안코드로 다시 등록해야 유저가 로그인 구현이 가능해집니다. 

 

 

4. 회원 정보 관리 정책 정하기 

 

기존 기획과는 다르게 각 플랫폼 별 백업 시스템을 구현하는게 아니라 supabase 를 이용해서 각 플랫폼에게 동일한 백업 서비스를 구현하는게 좋다고 판단했습니다. 그래서 본의아니게 고객님 정보를 제가 관리를 해야 합니다.

 

회원 가입 할 때 어떠한 정보를 받을지, 계정삭제는 어떻게 진행 할지 등등 이런 고민을 자연스럽게 하게 되네요. 

아무래도 유저가 사용하는 매출과 지출의 데이터는 꽤 민감하기 때문에 여러 컴플레인에 대해 대비를 해야 할 것 같습니다. 

 

결론

 

회원가입은 빡세다

 

728x90
반응형