Meta (= Facebook) SDK v17 부터 iOS 앱에서 앱 추적을 거절한 상태에서 제한적 로그인을 사용하지 않으면 액세스 토큰을 반환하지 않도록 변경되었다. 메타에서는 이를 제대로 공지했으나,최근까지도 많은 개발자들이 '페이스북 인증이 되지 않는다!' 라는 하소연을 하고 있는 것을 쉽게 발견할 수 있었다.
아무튼 우리 프로젝트도 위와 같은 문제로 고대의 누군가가 구현해둔 페이스북 로그인 기능을 제한적 로그인으로 교체했는데 작업하면서 알게된 (또는 테스트로 밝혀진) 것들에 대해 정리해 보았다.
1) 제한적 로그인을 사용하면 AccessToken 과 그에 관련된 대부분의 정보를 사용할 수 없다. 유니티용 페이스북 SDK 는 페이스북 로그인을 하게 되면 내부적으로 갱신해버리고, 전역으로 선언된 변수를 사용하게끔 만들어져있다보니 기존에 사용하던 액세스 토큰을 '그대로 써도 되나?' 라는 생각부터 들텐데 절대 쓰면 안 된다. 제한적 로그인은 액세스 토큰을 전혀 반환하지 않고 JWT 형식의 인증 토큰과 프로필이라는 형태로 되돌려준다.
2) 제한적 로그인을 사용하면 서버 사이드 인증도 크게 바뀐다. 이것도 1) 과 같이 문서에 잘 명시된 내용이지만 살짝 난해하게 설명되어 있는데, 한 줄로 요약하면 '클라이언트로부터 받은 JWT 를 서버 내부 로직으로 알아서 검증해!' 이다. (원랜 액세스 토큰 값을 던지면 본인들 서버에서 검증해줌)
3) 제한적 로그인으로 반환하는 정보가 변경되면서 UserID 와 같은 값들이 바뀌지 않을까? 라는 우려가 있었는데, 다행히 UserID 는 기존 값을 그대로 반환해주고 있었다. 너무 당연한 내용이라서 그런건지 모르겠지만, 이와 관련하여 속 시원하게 명시해둔 곳이 없어서 두 가지 로그인 방식으로 직접 검증을 해봤다.
아래 두 항목은 확실하게 밝혀진 것이 아닌, 관찰된 현상들이다.
내 추측으로는 앱 내에서 페이스북 로그인을 했을 때 남아있는 인증 정보로 인한 현상으로 보인다.
4) (제한적 로그인 미적용 상태) FB.Mobile.SetAdvertiserTrackingEnabled(...) 메서드를 사용하는 경우, 액세스 토큰을 반환하지 않는 현상이 재현되지 않기도 했다. 애초에 v17 부터 호출할 필요가 없는 기능이지만, 인터페이스 자체는 남아있어서 실수로 남겨두는 경우 ATT 거절을 하든 말든 액세스 토큰이 정상적으로 반환되는 말도 안 되는 현상이 발생한다. 따라서, v17 을 사용할 땐 해당 메서드를 반드시 제거해야한다. 우리 프로젝트도 QA에서 발견되지 않아 한동안 라이브까지 나갔는데 어느날 갑자기 로그인이 되지 않는다는 제보가 빗발쳐서 대응하게 되었다.
5) (제한적 로그인 미적용 상태) ATT 를 한 번 거절한 이후, 앱을 재설치 하고 ATT 팝업을 다시 만나서 허용할 때까지 ATT 거절로 판정되어 액세스 토큰을 던져주지 않는다. ATT 가 제대로 갱신되지 않는 현상은... iOS14 부터 발견되었던 현상이라 🤔 뭐가 원인인지는 여전히 알 수 없다.
일단 지금까지 알게 된 사항은 이 정도이다.
우리 게임이 오래된 프로젝트라 기술 부채로 인한 잔고장...일 수도 있는데, 혹시나 비슷한 문제가 생긴 누군가(또는 미래의 나)에게 도움이 될까하여 남겨보았다.
'오리 도서관 > (미분류) 삽질 방지 개발 지식' 카테고리의 다른 글
| [TIP] 코딩 테스트를 연습할 때, 파일로 입력을 받기 ( C/C++ ) (0) | 2025.02.10 |
|---|---|
| [vcpkg] mac os 환경에서 BUILD_FAILED 가 발생할 때 (0) | 2025.01.03 |
| [vcpkg] 특정 버전의 패키지를 받고 싶을 때 (0) | 2025.01.02 |