React Native로 구현된 크로스 플랫폼 앱에 딥링크를 도입해 달라는 요구사항을 받았다.
sdk 라이브러리 설치, appsflyer에 앱 추가하고 sdk 연결하기 까지는 무난하게 되었다.
onelink 도메인도 appsflyer에서 제공해주어서 쉽게 새로 팠다.
문제는 안드로이드에서 앱링크를 사용하려면 SHA-256 서명을 RN프로젝트에 추가하라는데?
이 서명이 왜 필요한지, 어떻게 추가할 수 있는지를 전혀 몰랐다는 것 …
공식문서를 봐도,

참고 그림을 봐도 전혀 무슨 소리인지 이해가 되지 않았고,
지피티에 질문해서 하기와 같은 결론을 얻어내었다.
📌 PKCE를 거치면 얻게 되는 것
- code_verifier - a large random string generated by the client
- code_challenge - the SHA 256 of the code_verifier
요약하자면
- SHA-256은 어떤 프로토콜이나 정책이 아닌 단순한 ‘해시 함수’.
- code_verifier를 전달하면 SHA-256 해시함수를 통해 해시 값을 반환하는구나.
- 이 해시 값을 처리하는 것은 OAuth 2.0 인증 과정과 서버.
- AppsFlyer 서버에서는 정확히 어떻게 처리하는지 모르지겠만,
code_verifier와code_challenge의 일치성을 검증하는 로직이 있겠구나.라는 결론에 도달함.
이것을 이해하고 다시 위의 RN공식문서를 보니 이해가 잘 되었다.
그런데 이제 어떻게 구현하지?
인증서를 내 앱에 구현하기 위해 많은 서치를 해보았다…
참고 문서 : Android initial setup

우리 프로젝트는 이미 플레이 스토어에 서비스 중인 상태였다.
→ 당연히 keystore 파일이 플레이스토어에 올라간 상태였음.
→ keystore를 업로드했다면 해당 keystore에 종속된 SHA-256 인증도 있을것이고…
→ appsFlyer 공식문서를 확인하니 SHA-256 인증 관련 내용이 있었음.
→ 문서를 보고 우리 서비스 플레이 콘솔에 들어가보니 … 당연히 서명키 인증이 있었더랬다 😂
공식 문서를 진작 봤으면 될 걸 너무 멀리 가서, 이미 구현되어 있던 것의 원리를 파고 들었다.
그치만 해시함수를 추상적으로만 배우고 알고리즘이나 달달 외웠지… 이렇게 실제로 사용하는 예시를 보니 헛으로 공부한건 아니라서 재밌기도 했다.
안녕하세요 ! 원링크메니지먼트는 어디서 찾을 수 있나요 ? sha256 코드를 appsflyer어느곳에 셋 해주어야 하는지 알고 싶어요₩