저는 토스 미니앱을 개발 중인 개발자입니다. 토스 로그인 기능 연동 과정에서 “연결 끊기 콜백” 부분에서 문제가 발생하고 있어 문의드립니다. 토스 콘솔(developers-apps-in-toss.toss.im)에서 “테스트 요청하기” 버튼을 클릭할 때마다 “콜백 요청에 실패했어요. 아래 응답 값을 확인해 주세요. Failed to fetch” 오류가 반복적으로 뜹니다. 이미 커뮤니티 포스트와 공식 문서를 참고해 모든 권장 해결책을 적용해봤지만, 여전히 문제가 해결되지 않아 도움을 요청합니다.
문제 상세 설명
-
오류 메시지: “Failed to fetch” (브라우저 콘솔에서 네트워크 요청 실패로 보임)
-
발생 시점: 토스 콘솔 > 로그인 > 연결 끊기 콜백 설정 > “테스트 요청하기” 클릭 시
-
요청 형식: GET 요청으로 추정되며, Authorization: Basic {base64_encoded_credentials} 헤더 포함. userKey나 referrer 파라미터는 콘솔 테스트 시 없음.
-
환경 정보:
-
백엔드: Express.js (Node.js)
-
배포 플랫폼: Google Cloud Run (서비스 URL: https://power-of-dream-ecevpk5bha-uc.a.run.app)
-
콜백 엔드포인트: https://power-of-dream-ecevpk5bha-uc.a.run.app/api/toss/unlink
-
지원 메서드: GET, POST, OPTIONS
-
이미 시도한 해결책 (모두 실패)
커뮤니티 포스트(예: “연결 끊기 콜백이 호출되지 않습니다”, “Failed to fetch 오류”)와 공식 문서(developers.toss.im/login/console.html)를 50개 이상 확인하며 아래를 모두 적용했습니다:
-
CORS 설정 확장: allowedOrigins에 토스 관련 도메인 10개 이상 추가 (https://business.toss.im, https://console.toss.im, https://developers-apps-in-toss.toss.im 등). Origin 없거나 개발 환경 시 ‘*’ 허용.
-
OPTIONS preflight 명시적 처리: app.options(‘/api/toss/unlink’)로 별도 핸들러 추가, CORS 헤더 설정 후 200 OK 반환.
-
Basic Auth 개선: OPTIONS 요청과 콘솔 테스트(userKey/referrer 없음) 시 인증 스킵. 콘솔에 Basic Auth 칸 비우기/임의 값(test123) 입력 테스트.
-
응답 최적화: 콘솔 테스트 시 JSON 대신 빈 200 OK (res.sendStatus(200)) 반환. (JSON 파싱 실패 방지)
-
로그 추가: 모든 요청의 Origin, User-Agent, Auth 헤더 로깅. Cloud Run 로그 확인 결과, 콘솔 테스트 시 요청 자체가 서버에 도달하지 않음.
-
Cloud Run 설정 확인: 공개 액세스 허용 (allow-unauthenticated), IAM 정책 (allUsers에 invoker 역할 부여), 지역/방화벽 제한 없음.
-
대안 테스트: curl/Postman으로 동일 엔드포인트 테스트 시 성공 (200 OK). 실제 토스 앱에서 연결 끊기 시도 시 콜백 호출 확인 (하지만 콘솔 테스트만 실패).