Shopify에 앱 설치가 안되었던 이유

2024년 5월 13일 월요일

Today I Learned

날짜

2024년 5월 13일 월요일

내용

1 스토어 2 앱 설치

하나의 스토어에 우리 앱 2개가 설치되지 않는다. 쇼피파이에게 문의한 결과는 “개발에 관련된 질문은 받지 않으니, 개발자 커뮤니티를 이용하거나 우리 디스코드에 들어와!” 내가 안찾아봤겠냐고… 거기도 이미 답변을 다는 사람에 비해 너무 많은 질문이 올라온지 한참되버렸을 뿐더러, 내가 원하는 질문은 찾을 수도 없었다. 별 수 있나? 열심히 짱구 굴려봐야지..

답이 없을 것 같았던 문제는, 전지전능하신 선배님의 도움으로 해결되었다. 브라우저 부스터 앱 설치를 테스트 서버로 넘기기 전에, ngrok을 이용해 내 로컬로 설치할 수 있다. 더 쉽게 말하자면, 유저가 “앱 설치할래요!” 라고 요청을 보내면, 쇼피파이와 앱 서버(여기선 우리 테스트 서버)는 검증받은 앱인지, 올바른 URL인지 기타 등등을 검증하고, 데이터를 주고 받는다. 이 과정에서 우리 서버에는 설치한 스토어의 정보가 저장되고, 새로운 손님에겐 우리가 미리 설정한 주소(온보딩 or 로그인 페이지)로 리다이렉트 시켜준다. ngrok을 이용하면 쇼피파이가 테스트 서버 대신 내 로컬과 이야기를 주고받도록 설정하는 셈이다.

이 방법이 중요했던건, 데이터와 검증을 주고받는 코드에 로깅문을 찍어볼 수 있어, 구체적으로 어디가 잘못되고 있는건지 파악할 수 있다는 것. 테스트 서버에선 “내 코드가 이상한게 없는데, 쇼피파이 문제구만!” 으로 치부했던 문제가, 이 방법을 통해 오롯이 내 탓이였음을 증명할 수 있었다. 결국 문제가 발생했던 부분은

  1. 쇼피파이에게 데이터를 받을 웹훅 주소가 새로운 앱으로 설정되어있지 않았다.
  2. 웹훅을 설정할 때 조회하는 샵 테이블이 이전 앱 기준이었다.
  3. 고유한 샵 액세스코드를 생성하는 코드가 잘못되어, 무한 루프를 돌고 있었다.

였다.

특히 3번은 대단히 충격적이었는데,

1
2
3
4
5
6
7
While True:
	if not new_access_code:
		# 액세스 코드를 만드는 로직..
		new_access_code = uuid.uuid4()
		# 데이터베이스를 조회해 새로 만든 액세스코드가 이미 존재하는지 확인하는 코드..
		stmt = models...
		

이런 코드였다. new_access_code가 제대로 만들어져도, While True 가 밖이니 탈출하지 못한다. 알고리즘 문제에서만 보던 무한루프를 내 코드에서..

결국 잘 해결됐다. 다행이다.

회고

앱 삭제도, 할인 코드 주는 것도, 쿠폰 사용여부 확인하는 것도 앱 설치가 해결되니 술술 풀린다.