React Native 카카오 로그인 Firebase 연동

React Native 카카오 로그인 + Firebase 연동

머쓱이는 프로그래머스에 로그인하려고 합니다. 머쓱이가 입력한 아이디와 패스워드가 담긴 배열 idpw와 회원들의 정보가 담긴 2차원 배열 db가 주어질 때, 다음과 같이 로그인 성공, 실패에 따른 쪽지를 return하도록 solution 함수를 완성해주세요. 아이디와 비밀번호가 모두 일치하는 회원정보가 있다면야 login을 return합니다. 로그인이 실패했을 때 아이디가 일치하는 회원이 없습니다.면 fail를, 아이디는 일치하지만 비밀번호가 일치하는 회원이 없습니다.면 wrong pw를 return 합니다.


주요 추가 의존성
주요 추가 의존성

주요 추가 의존성

Spring WebSpring MVC를 사용해서 RESTful을 포함한 웹 애플리케이션을 빌드합니다. 서버 내에서 요청을 송신하기 위한 고객 역할을 수행할 수 있는 RestTemplate을 내재하고 있습니다. Lombok생성자, Getter와 같이 반복적으로 재사용되는 코드들을 어노테이션을 부여하는 방식으로 정의할 수 있어요.

본 서버 애플리케이션에서는 카카오 인가 서버로부터 반환받은 액세스 토큰을 고객 애플리케이션에 직접 반환해 활용하는 방식으로 구현하였으나, 서버가 전달받은 액세스 토큰을 사용해서 카카오 API 서버에 사용자의 정보를 요청해 반환받은 뒤 해당 정보를 조합하거나 다른 비즈니스 로직을 거쳐 서버에서 사용할 리소스로 변환해 영속화하고, 해당 리소스를 인코딩하는 식으로 자체적으로 액세스 토큰을 만들어 반환하는 방식으로 구현할 수도 있습니다.

워드프레스 Salt 변경
워드프레스 Salt 변경

워드프레스 Salt 변경

wpconfig.php 파일에서 워드프레스 솔트Salt를 삭제한 다음, 로그인을 시도해봅니다. 문제가 해결되면 위의 그림의 링크를 클릭하여 제작된 salt를 다시 붙여넣기 하도록 합니다. 문제가 해결되지 않더라도 salt를 새로 생성하여 업데이트하시기 바랍니다. phpMyAdmin에서 sessiontokens 삭제hpMyAdmin에 접속하여 wpusermeta의 sessiontokens 값을 삭제하여 문제가 해결되었다고 하는 사용자들도 있습니다.

경고DB데이터베이스 작업은 위험하므로 무조건적으로 백업을 한 후에 진행하시기 바랍니다.

리소스 획득
리소스 획득

리소스 획득

7. 소비자 서버 애플리케이션은 카카오 계정 소유자의 허가된 개인정보를 카카오 API 서버에 요청합니다. 요청 헤더에는 카카오 인증 서버로부터 반환받은 액세스 토큰을 포함합니다. 8. 카카오 API 서버는 액세스 토큰이 유효할 경우 카카오 계정 소유자의 허가된 개인정보를 에 포함해 응답으로 반환합니다. 9. 소비자 서버 애플리케이션은 반환받은 카카오 계정 소유자의 개인정보에서 식별자 등을 사용해서 소비자 애플리케이션에서 사용할 액세스 토큰을 생성해 반환합니다.

이 과정에서 필요합니다.면 소비자 식별을 위한 리소스를 생성해 서버에 저장합니다. 해당 플로우를 따르는 단순한 클라이언트, 서버 애플리케이션을 구현해보았습니다.

Kakao Developers에 애플리케이션 등록

다음의 링크를 통해 Kakao Developers의 내 애플리케이션으로 이동합니다. 실현하는 소셜 로그인 애플리케이션과 연동하기 위해 애플리케이션 추가하기를 수행합니다.

액세스 토큰 발급

4. 소비자 고객 애플리케이션은 등록했던 리다이렉트 URI에서 소비자 서버 애플리케이션에 로그인하기 위한 액세스 토큰 요청을 송신합니다. 이같은 경우애 요청 에 인증 코드를 포함합니다. 5. 소비자 서버 애플리케이션은 전달받은 해당 인증 코드를 사용해서 카카오 인증 서버에 액세스 토큰 발급을 요청하는 POST 요청을 송신합니다. 6. 카카오 인증 서버는 인증 코드가 유효할 경우 카카오 계정 소유자의 허가된 개인정보에 접근할 수 있는 액세스 토큰 및 연관 내용들을 에 포함하여 응답으로 반환합니다.

주요 추가 의존성

arcel고객 애플리케이션을 빌드합니다. reactrouterdomURL 링크에 따라 화면에 표출시킬 컴포넌트를 선택합니다. usehookstsuseLocalStorage Custom Hook을 사용할 수 있어요. 브라우저의 로컬 스토리지에 존재하는 KeyValue 쌍들 중 지정한 Key에 해당하는 Value를 useLocalStorage의 setValue 형식 함수를 호출해 변경했을 경우, 브라우저에 표출되고 있는 컴포넌트들 중 로컬 스토리지에서 해당 KeyValue 쌍을 사용하고 있는 컴포넌트를 리렌더링합니다.

본 애플리케이션에서는 서버 애플리케이션에서 반환하는 액세스 토큰을 로컬 스토리지에 저장해 사용합니다. axiosPromise를 기반으로 HTTP 요청을 생성해 지정한 URL에 송신하고, 응답을 반환받는다.

이 이슈를 풀면서 문자열에 관하여 다시 공부하는 동기가 되었습니다. 이중 if문을 사용해서 이슈를 풀 수 있는 스킬이 늘었습니다. 다음에도 이런 문제가 생기면 최우선으로 어떠한 방식으로 풀어야할지 생각을 먼저한 다음에 하나씩 하나씩 이슈를 풀었야겠다는 생각이 들었습니다. 비록 랩 0을 풀고 있지만 문제가 익숙해지면 더 어려운 문제도 풀 수 있다고 생각합니다.

자주 묻는 질문

주요 추가 의존성

Spring WebSpring MVC를 사용해서 RESTful을 포함한 웹 애플리케이션을 빌드합니다. 구체적인 내용은 본문을 참고하시기 바랍니다.

워드프레스 Salt 변경

wpconfig 구체적인 내용은 본문을 참고하시기 바랍니다.

리소스 획득

7 궁금한 사항은 본문을 참고하시기 바랍니다.

Leave a Comment