샌드박스에서만 generate-token 실패해요.

이 글의 성격은 무엇인가요?

질문 / 문제 해결

내용을 설명해주세요

상황 요약**

  • 토스앱(실서비스) 에서는 미니앱 토스 로그인이 정상 동작합니다.
  • 샌드박스 환경에서만 로그인 시 실패하며, BFF에서 토스 generate-token API를 호출했을 때 아래 응답을 받습니다.

3. 토스 API 응답 (요약)

  • HTTP 200 + body 내 resultType: "FAIL"
  • errorCode: OAUTH_ISSUE_TOKEN_ERROR
  • reason:
    400 BAD_REQUEST : invalid_grant. 사유: 1. authorization_code 가 이미 사용되었거나 만료됨. 2. 존재하지 않는 authorization_code(혹은 clientId 불일치).

4. 우리 측 구현 요약

  • 클라이언트: appLogin()으로 받은 authorizationCode, referrer를 BFF로 전달합니다. 샌드박스일 때는 referrer: "sandbox"로 보냅니다.
  • BFF: 단일 TOSS_API_URL(https://apps-in-toss-api.toss.im), 단일 mTLS 인증서(TOSS_CLIENT_CERT, TOSS_CLIENT_KEY)로
    POST /api-partner/v1/apps-in-toss/user/oauth2/generate-token
    호출 시 body에 authorizationCode, referrer 넣고 있습니다. (공식 문서 기준으로 client_id 등은 넣지 않음)
  • 인가 코드는 매 요청 새로 발급받아 한 번만 사용하고 있으며, referrer·앱 버전·재사용 여부는 확인 완료했습니다.

5. 문의 드리고 싶은 점

  1. 샌드박스에서 발급된 authorization_code실서비스와 동일한 mTLS 인증서·동일한 API URLgenerate-token에 보내도 되는 구조인가요, 아니면 샌드박스 전용 API URL·인증서(또는 별도 앱/ clientId 설정)가 필요한가요?
  2. 에러 사유 중 **“존재하지 않는 authorization_code(혹은 clientId 불일치)”**가 나오는 경우,
    • 샌드박스 앱과 실서비스 앱(또는 콘솔에 등록한 앱) 간 clientId/앱 식별이 다르게 되어 있어서 그런 것인지,
    • 그렇다면 콘솔에서 확인할 수 있는 clientId 또는 앱–인증서 매핑 안내가 있는지
      알려주시면 감사하겠습니다.
  3. 위와 같은 “실서비스는 성공, 샌드박스만 실패” 사례에서 토스 측에서 권장하는 점검 순서나 설정 확인 방법이 있다면 안내 부탁드립니다.

6. 환경

  • WebView 미니앱, SDK 2.0.2
  • BFF: Node.js, 단일 API URL + 단일 mTLS로 generate-token / login-me 호출

appName (선택)

btdalarm

안녕하세요 :slight_smile:
샌드박스 앱에서도 실 환경과 동일한 url 및 엔드포인트를 사용하시는게 맞습니다.

샌드박스앱에서 로그인 이후 토스 로그인을 설정한 앱을 선택해주셨을까요 ?

네네.. btdalarm 하나만 뜨고, 그거 눌러서 매니앱 열었어요.