Android 앱을 Digits에서 Firebase로 이전

Digits를 사용하여 전화번호로 사용자를 로그인 처리하는 경우 앱을 Firebase 인증으로 이전해야 합니다. 전화번호 로그인 기능은 이제부터 Firebase에서만 업데이트가 이루어지며 Digits는 2017년 9월 30일에 종료됩니다.

이 페이지의 안내에 따라 현재 Digits 사용자에게 불편을 주지 않으면서 Digits에서 Firebase로 앱을 이전할 수 있습니다.

개요

앱을 Digits에서 Firebase 인증으로 이전하는 방법은 다음과 같습니다.

  1. Digits 사용자 계정을 Firebase로 이전
  2. Digits SDK를 Firebase SDK로 대체
  3. 활성 Digits 세션을 Firebase로 이전

첫 번째 단계는 앱이나 기존 사용자에게 영향을 주지 않고 즉시 완료할 수 있으며, 이와 동시에 나머지 단계를 완료해야 합니다.

Digits 사용자 계정을 Firebase로 이전

우선 Fabric 개발자 문서의 설명에 따라 Digits 사용자 계정을 Firebase로 이전합니다.

계정 이전 단계를 완료한 후 Digits 계정이 Firebase 프로젝트로 이전될 때까지 몇 시간 정도 기다립니다. 이전이 완료되면 모든 Digits 사용자 계정을 포함하는 Firebase 프로젝트가 생깁니다. 또한 이전을 시작한 후에 생성한 모든 Digits 계정이 자동으로 Firebase로 이전됩니다.

Digits SDK를 Firebase SDK로 대체

다음으로, 앱에서 Digits SDK에 대한 호출을 Firebase SDK에 대한 호출로 바꿉니다.

앱에 Firebase 인증을 사용한 전화번호 로그인을 추가하려면 다음 중 하나를 수행합니다.

  • UI가 있는 삽입형 솔루션이 필요하면 FirebaseUI를 설치하고 DigitsAuthButton을 표시하는 활동을 FirebaseUI의 AuthUI 활동으로 바꿉니다. 예를 들면 다음과 같습니다.
    startActivityForResult(
        AuthUI.getInstance()
            .createSignInIntentBuilder()
            .setProviders(Arrays.asList(
                new AuthUI.IdpConfig.Builder(AuthUI.PHONE_VERIFICATION_PROVIDER).build(),
                // Other providers you want to support
                // ...
            ))
            .build(),
        RC_SIGN_IN);
    
    이 방법은 앱에 Firebase 인증을 추가하는 가장 쉬운 방법입니다.
  • FirebaseUI를 사용하지 않고 UI를 직접 만들거나 기존 로그인 UI와 통합하려면 전화번호 로그인을 사용하도록 Firebase SDK를 설정하고 Digits 코드를 다음과 같이 변경합니다.

    • 활동의 레이아웃에서 com.digits.sdk.android.DigitsAuthButton 요소를 표준 Button 또는 ImageButton 요소로 바꿉니다.
    • AuthCallback의 로직을 PhoneAuthProvider.OnVerificationStateChangedCallbacks의 해당 코드로 바꿉니다.
    • 전화번호 로그인 버튼의 onClick 리스너에서 다음과 같이 Digits.authenticate 호출을 verifyPhoneNumber 호출로 바뀝니다.
      PhoneAuthProvider.getInstance().verifyPhoneNumber(
          phoneNumber,        // Phone number to verify
          60,                 // Timeout duration
          TimeUnit.SECONDS,   // Unit of timeout
          mCallbacks);        // OnVerificationStateChangedCallbacks
      

Digits를 Firebase로 대체한 후 build.gradle 파일에서 Digits SDK를 삭제합니다.

활성 Digits 세션을 Firebase로 이전

마지막으로, 업데이트된 앱을 배포한 후 사용자가 다시 로그인할 필요가 없도록 활성 사용자 세션을 Digits에서 Firebase로 이전합니다.

Digits 세션을 Firebase 세션으로 이전하려면 Digits Migration Helper SDK를 사용하여 활성 Digits 세션으로부터 Firebase 인증 토큰을 생성합니다. 그런 다음 토큰을 사용하여 Firebase에 로그인합니다. 마지막으로, Firebase를 사용하여 성공적으로 로그인한 후 Digits 세션을 지웁니다.

  1. 모듈 수준 build.gradle 파일에 Digits Migration Helper에 대한 종속 항목을 추가합니다.
    compile 'com.google.firebase:firebase-auth:11.8.0'
    compile 'com.firebase:digitsmigrationhelpers:0.1.1'
    
  2. AndroidManifest.xml에 Fabric 및 Digits 키가 포함되어 있는지 확인합니다.
    <!--You may already have io.fabric.ApiKey entry. Continue using it -->
    <meta-data
        android:name="io.fabric.ApiKey"
        android:value="@string/FABRIC_API_KEY"
        tools:replace="android:value"/>
    <meta-data
        android:name="com.digits.sdk.android.ConsumerKey"
        android:value="@string/CONSUMER_KEY"/>
    <meta-data
        android:name="com.digits.sdk.android.ConsumerSecret"
        android:value="@string/CONSUMER_SECRET"/>
    
  3. 애플리케이션 또는 메인 활동의 onCreate 메소드에서 활성 Digits 세션이 있는지 확인하고 세션이 있으면 AuthMigrator.migrate를 호출하여 Firebase 세션으로 변환합니다. 예를 들면 다음과 같습니다.
    AuthMigrator.getInstance().migrate().addOnSuccessListener(this,
            new OnSuccessListener() {
                @Override
                public void onSuccess(Void authResult) {
                    FirebaseUser u = FirebaseAuth.getInstance().getCurrentUser();
                    if (u != null) {
                        // Either a user was already logged in or token exchange succeeded
                        Log.d("MyApp", "Digits id preserved:" + u.getUid());
                        Log.d("MyApp", "Digits phone number preserved: " + u.getPhoneNumber());
                    } else {
                        // No tokens were found to exchange and no Firebase user logged in.
                    }
                }
            }).addOnFailureListener(this,
            new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    // Error migrating Digits token
                }
            });
    
    호출이 성공적으로 완료되면 Digits 세션이 Firebase 세션으로 변환되고 원래 Digits 세션이 삭제됩니다.
  4. 선택사항: Digits 세션이 이전되었음을 기록하고, 이전 단계가 이미 완료된 경우 상황에 따라 적절히 건너뜁니다.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.