본문 바로가기
android

파이어베이스로 안드로이드에서 애플로그인 인증

by 개발자언니 2024. 12. 4.
반응형

Firebase Android Apple 인증

로그인 제공업체 추가

Firebase Console에서 인증 > 로그인 방법 > 새 제공업체 추가 > Apple 을 사용 설정합니다.

 

안드로이드에서 애플 로그인을 하기 위해선 우선 서비스 ID가 필요합니다. 

 

서비스 ID 생성

Certificates, Identifiers & Profiles 에서 Identifiers 클릭

왼쪽 상단에 있는 추가 버튼(+)을 클릭하고 Services ID 를 선택한 다음 Continue.

 

Services ID에 대한 설명을 입력합니다. 식별자에 리버스 도메인 이름 스타일 문자열을 입력한 다음 Continue.

생성된 Services ID를 클릭해서 Sign in with Apple 체크 박스를 체크

 

Configure를 클릭해서 파이어베이스 애플 로그인 세팅에 있었던 승인 콜백 URL을 넣어줍니다. 

 

설정을 다 완료하고 서비스 ID에 생성한 Services ID의 Identifier를 넣어줍니다.

 

OAuth 코드 흐름 구성 채우기

이제 OAuth 코드 흐름 구성을 열어 빈칸들을 다 채워줍니다.

 

Apple 팀 ID

Apple 팀 ID 는 애플 개발자 계정 에서  멤버십 세부사항에서 팀 ID 를 찾아서 넣어주면 됩니다.

 

키 ID 생성

Certificates, Identifiers & Profiles 에서 Keys 클릭 Key Name 을 설정하고

Sign in with Apple 체크하고 Continue

 

여기에서 생성된 Key ID를 키 ID에 넣어주고 Key를 다운받아 줍니다. 

 

AuthKey_KEYIDKEYID.p8 이런 형태의 파일을 받아서 열고

 

-----BEGIN PRIVATE KEY-----

THISPARTISTHEPRIVATEKEYTHISPARTISTHEPRIVATEKEY

THISPARTISTHEPRIVATEKEYTHISPARTISTHEPRIVATEKEY

THISPARTISTHEPRIVATEKEYTHISPARTISTHEPRIVATEKEY
-----END PRIVATE KEY-----

 

전부 복사해서 비공개 키에 넣어주면 됩니다. 

 

사실 OAuth 코드 흐름 구성 빈칸 채우는 부분이 제일 힘든 부분이고 나머지 구현은 파이어베이스 문서 대로 따라하면 됩니다.

 

Firebase SDK로 로그인 과정 처리

1. 제공업체 ID apple.com을 사용하여 빌더로 OAuthProvider의 인스턴스를 생성합니다.

OAuthProvider.Builder provider = OAuthProvider.newBuilder("apple.com");

 

2. OAuth 제공업체 객체를 사용해 Firebase에 인증합니다.

대기 중인 결과가 있는지 확인하려면 다음과 같이 getPendingAuthResult()를 호출합니다.

mAuth = FirebaseAuth.getInstance();
Task<AuthResult> pending = mAuth.getPendingAuthResult();
if (pending != null) {
    pending.addOnSuccessListener(new OnSuccessListener<AuthResult>() {
        @Override
        public void onSuccess(AuthResult authResult) {
            Log.d(TAG, "checkPending:onSuccess:" + authResult);
            // Get the user profile with authResult.getUser() and
            // authResult.getAdditionalUserInfo(), and the ID
            // token from Apple with authResult.getCredential().
        }
    }).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            Log.w(TAG, "checkPending:onFailure", e);
        }
    });
} else {
    Log.d(TAG, "pending: null");
}

 

3. 대기 중인 결과가 없으면 startActivityForSignInWithProvider()를 호출하여 로그인 과정을 시작합니다.

 

mAuth.startActivityForSignInWithProvider(this, provider.build())
        .addOnSuccessListener(
                new OnSuccessListener<AuthResult>() {
                    @Override
                    public void onSuccess(AuthResult authResult) {
                        // Sign-in successful!
                        Log.d(TAG, "activitySignIn:onSuccess:" + authResult.getUser());
                        FirebaseUser user = authResult.getUser();
                        // ...
                    }
                })
        .addOnFailureListener(
                new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        Log.w(TAG, "activitySignIn:onFailure", e);
                    }
                });

 

안드로이드에서 애플 인증 완료

반응형