Skip to content
스토브
마지막 업데이트

실제 이용 흐름이 궁금하신가요?

이용 시나리오 / 웹 서비스 이용하기

웹 서비스 로그인 연동

이해하기


웹 서비스 로그인 연동은 공식 홈페이지·이벤트 페이지 같은 웹 서비스에 스토브 계정 로그인을 연동하는 기능이에요. 이용자는 별도의 계정 없이 스토브 계정으로 로그인하고, 웹 서비스는 발급된 인증 쿠키(SUAT)로 로그인 상태를 확인해요.

연동 방식은 두 가지예요. 스토브 공통 네비게이션을 웹 페이지에 삽입하는 GNB 방식과, 스토브 로그인 페이지를 직접 호출하는 로그인 URL 방식이에요. 로그인·언어·테마 같은 공통 UI까지 함께 제공하려면 GNB 방식을, 로그인 동선만 연동하려면 로그인 URL 방식을 선택하면 돼요.

연동 방식

방식 이런 경우에 사용 특징
GNB 방식 로그인 외에 회원가입·언어·테마·게임 이동 등 공통 UI를 함께
제공하려는 웹 서비스
스토브 공통 네비게이션 모듈을 웹 페이지에 삽입.
(반응형 UI·옵션 커스텀 제공)
로그인 URL 방식 공통 UI 없이 스토브 로그인 동선만 직접 연동하려는 웹 서비스 스토브 로그인 페이지를 URL로 호출하고, 완료 시 쿠키로 인증 상태 확인

적용 환경

스토브 인증은 도메인 요건을 충족하는 웹 서비스에서만 사용할 수 있어요. 외부 인프라로 서비스를 구성하는 경우 SSL 인증서가 필요해요.

항목 내용
도메인 요건 연동 대상 웹 서비스가 onstove.com 계열 도메인(예: xxx.game.onstove.com)을 사용해야 스토브 인증을 사용할 수 있음
SSL 인증서 외부 인프라로 웹 서비스를 별도 구성하는 경우 SSL 인증서 발급·설정 필요
반응형 지원 GNB 방식은 PC·Tablet·Mobile 화면에 맞춰 자동 레이아웃되는 반응형 UI 제공

구성 요소

구성 요소 역할
Web Service 공식 홈페이지·이벤트 페이지 등 스토브 로그인을 연동하는 대상 서비스
GNB 모듈 stove-gnb.js. 웹 페이지에 마운트되어 로그인·회원가입·언어·테마·게임 이동 등 공통 UI 제공
스토브 로그인 페이지 accounts.onstove.com/login. 로그인 URL 방식에서 직접 호출하는 인증 페이지
인증 쿠키 (SUAT) 로그인 완료 후 발급되는 STOVE User Access Token. 웹 서비스가 로그인 상태 식별에 사용
퍼블리싱 기술 담당자(기술PM) 도메인 연결, game_no·inflow_path 발급, SSL·방화벽 설정 등 사전 준비 처리

동작 원리

GNB 방식은 웹 페이지에 GNB 모듈을 로드해 지정한 요소에 마운트해요. GNB가 로그인·회원가입 동선과 언어·테마 등 공통 기능을 제공하고, 로그인이 완료되면 스토브 인증 쿠키가 설정돼요. GNB 자체를 수정하지 않고 서비스별 커스텀 영역과 옵션으로 필요한 기능만 선택해 사용해요.

로그인 URL 방식은 game_no·inflow_path·redirect_url을 포함한 스토브 로그인 페이지 URL을 생성해 호출해요. 이용자가 로그인을 완료하면 redirect_url로 이동하고, 웹 서비스는 응답 쿠키에서 SUAT 등 토큰 정보를 확인해 로그인 상태를 처리해요.

연동 가이드


사전 준비

두 방식에 공통으로 필요한 준비 사항이에요. 방식별 세부 준비는 각 [개발하기] 트랙에서 안내해요.

항목 내용 비고
도메인 연결 웹 서비스가 onstove.com 계열 도메인(예: xxx.game.onstove.com)을 사용하도록 연결. 도메인 연결은 기술PM이 처리 필수
코드 발급 로그인 URL 방식에 필요한 game_no와 유입경로 코드(inflow_path)를 기술PM을 통해 발급 로그인 URL 방식
SSL 인증서 외부 인프라로 서비스를 구성하는 경우 SSL 인증서 발급·설정. 기술PM을 통해 발급 가능 외부 인프라 시
테스트 계정 연동 테스트를 위해 웹에서 스토브 회원가입이 완료된 계정 확보 필수

연동 전 담당팀과 사전 공유가 필요해요
도메인 연결·코드 발급·방화벽 설정 등은 퍼블리싱 기술 담당자(기술PM)를 통해 진행돼요. 연동 시작 전 담당팀에 공유해 주세요. 문의: sgp_publishtech_d@smilegate.com

환경별 도메인 안내

방식별로 사용하는 도메인이 환경에 따라 달라요. 연동 테스트는 Sandbox에서 먼저 진행한 뒤 Live에 적용해요.

환경 GNB 모듈 (stove-gnb.js) 로그인 페이지
Live https://js-cdn.onstove.com/libs/common-gnb/latest/stove-gnb.js https://accounts.onstove.com
Sandbox https://js-cdn.gate8.com/libs/common-gnb/latest/stove-gnb.js https://accounts.gate8.com
QA https://js-cdn-qa.onstove.com/libs/common-gnb/latest/stove-gnb.js -
QA2 https://js-cdn-qa2.onstove.com/libs/common-gnb/latest/stove-gnb.js -
Dev https://js-cdn-dev.onstove.com/libs/common-gnb/latest/stove-gnb.js -
Dev2 https://js-cdn-dev2.onstove.com/libs/common-gnb/latest/stove-gnb.js -

개발하기


GNB 방식

GNB(Global Navigation Bar)는 스토브 계정 로그인·회원가입, 언어 변경, 게임 이동 등 공통 기능을 제공하는 웹 공통 네비게이션이에요. 서비스별 옵션으로 필요한 기능만 선택해 사용하고, 반응형 UI로 PC·모바일에서 동일한 경험을 제공해요. 아래 내용은 개편된 GNB 기준이에요.

사전 준비

  • 웹 서비스가 onstove.com 계열 도메인을 사용하도록 도메인 연결이 완료되어 있어야 해요.
  • 환경에 맞는 GNB 모듈(stove-gnb.js) 호스트 주소를 확보해야 해요. (환경별 도메인 안내 참고)
  • GNB를 렌더링할 요소(예:
    )를 페이지에 준비해야 해요.
  • 언어·테마 커스텀이 필요하면 서비스의 언어 커버리지와 기본 언어·테마 정책을 미리 정해야 해요.

개발 흐름

GNB 모듈을 로드한 뒤 렌더링할 요소를 지정해 window.StoveGnb.mount()를 호출하면 GNB가 마운트돼요. 로그인 여부에 따라 UI가 자동으로 바뀌고, 로그인이 완료되면 스토브 인증 쿠키가 설정돼요.

  1. 환경에 맞는 GNB 모듈(stove-gnb.js)을 로드해요.
  2. GNB를 렌더링할 요소의 CSS 선택자와 옵션 객체를 window.StoveGnb.mount(selector, options)에 전달해요.
  3. GNB가 마운트되며 로그인·회원가입·언어·테마 등 공통 UI가 렌더링돼요.
  4. 마운트·언어 변경·테마 변경 시점은 GNB 커스텀 이벤트로 전달되므로, 필요한 시점을 수신해 서비스 동작을 연결해요.
  5. 이용자가 로그인을 완료하면 스토브 인증 쿠키가 설정되고, 로그인 여부에 따라 GNB UI가 자동으로 전환돼요.
mount() 파라미터

window.StoveGnb.mount(selector, options)에 전달하는 인자예요.

파라미터 타입 설명
selector string GNB를 렌더링할 요소의 CSS 선택자
options object GNB 동작을 설정하는 옵션 객체
GNB 주요 기능

서비스별 옵션과 파트너스 설정으로 필요한 기능만 사용해요. 로그인 여부에 따라 기본 디자인이 자동으로 바뀌고, 모바일에서는 하단 메뉴바를 제공해요.

항목 내용
기본 디자인 로그인 여부에 따라 UI 자동 전환. 미로그인 시 회원가입·로그인 버튼, 로그인 시 알림·내정보 메뉴 제공
기본 메뉴 스토브·스토어 메뉴 통합. 노출 여부를 옵션으로 제어
전체 메뉴 메뉴와 게임 목록 분리. 언어·테마 설정 지원
즐겨찾기·내정보 즐겨찾기·인기 게임 목록 제공. 고객센터·신고센터는 전체 메뉴로 이동
모바일 대응 하단 메뉴바 제공. 타이틀 설정 여부에 따라 로고 표시 방식 변경
서비스 GNB 서비스명·알림·언어·테마·스토브 설치 버튼 등을 선택적으로 사용
화면 미리보기

서비스별 요구 사항은 별도 커스텀 영역에서 반영해요. GNB 자체를 수정하거나 다시 배포하지 않아도 서비스 UI를 확장할 수 있어요.

기본 디자인은 로그인 여부에 따라 자동으로 바뀌어요. 미로그인 시 회원가입·로그인 버튼을, 로그인 시 알림·내정보 메뉴를 제공해요.

기본 메뉴는 스토브·스토어 메뉴를 통합해 단순하게 구성했어요.

전체 메뉴는 게임 목록과 메뉴를 분리하고 언어·테마 설정을 함께 제공해요.

즐겨찾기는 즐겨찾기 기능과 인기 게임 목록을 제공하고, 내정보는 UI를 개선하며 고객센터·신고센터를 전체 메뉴로 옮겼어요.

모바일에서는 하단 메뉴바를 제공하며, 타이틀 설정 여부에 따라 로고 표시 방식이 달라져요. 왼쪽이 타이틀 미설정, 오른쪽이 타이틀 설정 화면이에요.

서비스 GNB는 스토브 서비스 외에도 사용할 수 있도록 다양한 옵션을 제공해요. 서비스 특성에 맞게 필요한 기능만 선택해요. 위가 기본 옵션, 아래가 서비스 옵션을 적용한 화면이에요.

설정 위치
ㆍ GNB 옵션: 메뉴·언어·테마·타이틀 노출 여부 설정
ㆍ 파트너스: 공통 GNB 관리 → 기본 메뉴 관리 / 전체 메뉴 관리 / 인기 게임 관리

언어 정책

GNB는 아래 우선순위로 노출 언어를 결정해요. 앞 단계에서 유효한 언어를 찾지 못하면 다음 단계로 넘어가요.

  1. URL 패스에 포함된 언어 정보 (예: https://event.onstove.com/ko) — useLanguageCodeFromPath 옵션이 true일 때 적용
  2. 쿠키(LOCALE)에 저장된 언어 정보 — URL 패스에 언어가 없으면 조회 후 리다이렉트
  3. 브라우저 언어 — 쿠키에 언어 정보가 없으면 서버는 Accept-Language, 브라우저는 navigator.language 참조
  4. 서비스 기본 언어 — 위에서 지원 언어를 찾지 못하면 각 프론트에 정의된 기본 언어 사용 (전체 웹 서비스 fallback은 영어)

GNB는 언어 변경 시 페이지 새로고침을 전제로 동작해요
언어 변경을 커스텀 처리하더라도 페이지가 새로고침되어야 GNB 언어 설정이 정상 반영돼요. customChangeLanguagetrue로 두면 언어 변경 시 GNB 커스텀 이벤트를 전달받아 직접 처리할 수 있어요.

언어 감지 로직 예시getLangByPath · getLangByCookie · getNavigatorLang

우선순위별 언어 감지 예시예요. 서비스 언어 커버리지(langCoverage)는 각 서비스에 맞게 채워요.

javascript
// 1) URL 패스의 언어
const getLangByPath = () => {
    const langCoverage = []; // 서비스 언어 커버리지
    const lang = window.location.pathname.split('/')[1];
    if (!lang) return null;
    const lowerCaseLang = lang.toLowerCase();
    return langCoverage.some((c) => c === lang) ? lowerCaseLang : null;
};

// 2) LOCALE 쿠키의 언어 (URL 패스에 언어가 없을 때)
const getLangByCookie = () => {
    const GNBLanguageCoverage = []; // GNB 서비스 언어 커버리지
    const lang = Cookies.get('LOCALE'); // 쿠키 조회는 외부 라이브러리 사용
    if (!lang) return null;
    const lowerCaseLang = lang.toLowerCase();
    return GNBLanguageCoverage.includes(lowerCaseLang) ? lowerCaseLang : null;
};

// 3) 브라우저 언어 (쿠키에도 없을 때)
const getNavigatorLang = () => {
    const lang = window.navigator.language;
    return lang.startsWith('zh') ? lang : lang.replace(/-\S+/g, '');
};

customChangeLanguagetrue로 두면 언어 변경 시 쿠키를 바꾼 뒤 change-language 이벤트를 전달해요. false(기본)면 쿠키를 바꾼 뒤 useLanguageCodeFromPathtrue면 URL 언어 패스를 바꿔 이동하고, 아니면 페이지를 새로고침해요. 이벤트 처리 예시는 아래 [샘플 코드]의 이벤트 수신 탭을 참고해요.

옵션

mount()에 전달하는 옵션이에요. 서비스에 필요한 옵션만 선택해 지정해요.

옵션 필수 기본값 설명
logArea 필수 "" 로그 수집용 로그 영역. 서비스 메인 주소를 기입 (예: https://store.onstove.com)
useLanguageCodeFromPath 선택 false true 시 URL Path의 언어코드를 감지해 언어 설정
serviceTitle.pc / .mobile 선택 "" 스토브 로고 우측 서비스 타이틀 (HTML string). PC·모바일 개별 지정
widget.notification 선택 true 알림 노출 여부
widget.stoveDownload 선택 false 스토브 설치 버튼 노출 여부
widget.languageSelect 선택 true 언어 선택 노출 여부
widget.themeSelect 선택 true 테마 선택 노출 여부
widget.stoveMenu.active / .mobile 선택 false / true 기본 메뉴 노출 여부. mobileactive=true일 때만 적용
global.languageCoverages 선택 ['en','zh-cn','zh-tw','ja','ko'] 언어 버튼으로 노출할 언어 목록. 기본 언어(en)가 없으면 자동 추가
global.defaultSelectedLanguage 선택 'en' 언어 정책상 사용할 언어가 없을 때 선택되는 기본 언어
global.customChangeLanguage 선택 false true 시 언어 변경 후 커스텀 이벤트 전달
loginMethod.redirectCurrentPage 선택 true 로그인 후 이동 위치. true는 현재 페이지, false는 account 도메인 기본 페이지
mode.theme.support / .default 선택 ["light"] / "light" 지원 테마 목록과 기본 테마. light·dark 조합 지정
mode.mini 선택 false 미니 버전(세로폭 감소, 높이 48px) 사용 여부
mode.layout 선택 "wide" 레이아웃 방식. wide / fix
mode.fixed 선택 true 상단 고정 여부. 고정 시 스크롤에도 GNB가 상단 유지
userMenu.coupon 선택 true 내정보 메뉴 내 쿠폰함 노출 여부
옵션 미리보기

주요 옵션의 실제 노출 예시예요.

serviceTitle — 스토브 로고 우측 서비스 타이틀 (PC / 모바일)

widget — 알림 / 스토브 설치 / 언어 선택 / 테마 선택

widget.stoveMenu — 기본 메뉴 (PC / 모바일)

global.languageCoverages / mode.theme — 언어 목록 / 테마 설정 팝업

mode.layout / userMenu.coupon — 레이아웃 / 내정보 쿠폰함

테마 옵션 상세

서비스가 지원하는 테마 목록과 기본 테마를 mode.theme로 설정해요. 지원 조합에 맞게 아래처럼 구성해요.

js
// 다크·라이트 모두 지원
mode: {
    theme: {
        support: ["dark", "light"],
        default: "dark"   // default는 서비스 기획에 따라 설정
    }
}

// 다크만 지원
mode: { theme: { support: ["dark"], default: "dark" } }

// 라이트만 지원
mode: { theme: { support: ["light"], default: "light" } }

테마 쿠키 유무와 지원 목록(support)에 따른 테마 적용 흐름이에요.

커스텀 영역과 런타임 변경

GNB 메뉴 영역은 지정된 커스텀 영역(customMenuArea)에서만 확장할 수 있어요. 기본 메뉴를 비활성화하고(widget.stoveMenu.active=false) GNB가 전달하는 마운트 이벤트를 수신해 서비스 메뉴를 직접 렌더링해요. 커스텀 영역 외에는 커스텀을 지원하지 않아요.

mount()의 반환값으로 제공되는 GNB 인스턴스의 updateOptions()로 런타임 중 옵션을 바꿀 수 있어요. 런타임 변경은 serviceTitlewidget.stoveMenu만 적용되고, 나머지 옵션은 무시돼요.

마운트 이벤트로 커스텀 시점을 파악해요
mounted: GNB 1depth 컨테이너가 마운트될 때 전달돼요. customMenuArea를 커스텀할 수 있어요.
menu-mounted: GNB 1depth 메뉴 영역의 스켈레톤이 꺼지고 노출될 때 전달돼요.

트러블슈팅

상황원인조치
GNB가 렌더링되지 않음모듈 로드 전 mount() 호출 또는 잘못된 선택자모듈 onload 이후 mount()를 호출하고 렌더링 요소의 선택자를 확인하세요.
로그인/인증이 동작하지 않음웹 서비스가 허용 도메인(onstove.com 계열)이 아님도메인 연결 상태를 확인하고 기술PM에게 문의하세요.
언어 변경이 반영되지 않음페이지 새로고침 없이 커스텀 처리언어 변경 후 페이지를 새로고침하거나 customChangeLanguage 이벤트 흐름을 확인하세요.
커스텀 메뉴 영역이 비어 있음마운트 이벤트 이전에 커스텀 영역 접근mounted/menu-mounted 이벤트를 수신한 뒤 customMenuArea를 사용하세요.
런타임 옵션 변경이 적용되지 않음런타임 미지원 옵션 변경 시도런타임 변경은 serviceTitle·widget.stoveMenu만 지원.

샘플 코드

GNB 모듈을 로드해 옵션과 함께 마운트하고, 마운트·언어·테마 이벤트를 수신하는 예제예요. 모듈 호스트 주소는 환경에 맞게 적용해 주세요.

html
<div id="stove-gnb-wrapper"></div>
<script defer>
    (function () {
        const script = document.createElement('script');
        script.src = 'https://js-cdn.onstove.com/libs/common-gnb/latest/stove-gnb.js'; // 환경별 적용 필요
        script.onload = () => {
            if (window.StoveGnb) {
                window.StoveGnb.mount('#stove-gnb-wrapper', {
                    logArea: 'https://도메인주소를입력해주세요',
                    useLanguageCodeFromPath: true, // URL 언어 패스 미사용 시 false
                    serviceTitle: {
                        pc: '',
                        mobile: '서비스 타이틀(모바일)'
                    },
                    widget: {
                        stoveMenu: {
                            active: true, // 기본 메뉴 비활성화 시 false
                            mobile: true
                        }
                    }
                });
            }
        };
        document.body.appendChild(script);
    })();
</script>

로그인 URL 방식

GNB를 사용하지 않고 스토브 로그인 페이지를 직접 연동하는 방식이에요. 웹 서비스가 로그인 페이지 URL을 생성해 호출하고, 로그인 완료 후 발급되는 쿠키(토큰·국가·언어 정보 등)로 계정 로그인을 연동해요.

사전 준비

  • 웹 서비스(공홈)의 도메인이 xxx.game.onstove.com 형태여야 스토브 인증을 사용할 수 있어요.
  • 외부 인프라를 별도 구성하는 경우 SSL 인증서를 발급·설정해야 해요. (기술PM 발급)
  • 유입 경로 식별용 inflow_pathgame_no를 기술PM을 통해 발급받아야 해요.
  • 연동 테스트를 위해 웹에서 스토브 회원가입이 완료된 계정이 있어야 해요.

개발 흐름

파라미터를 포함한 스토브 로그인 페이지 URL을 생성해 호출하고, 로그인이 완료되면 redirect_url로 이동해요. 웹 서비스는 응답 쿠키에서 SUAT 등 토큰을 확인해 로그인 상태를 처리해요.

  1. game_no·inflow_path·redirect_url을 쿼리 파라미터로 지정해 스토브 로그인 페이지 URL을 생성해요. redirect_url은 URL 인코딩해요.
  2. 생성한 로그인 페이지 URL을 호출해요.
  3. 이용자가 스토브 로그인 페이지에서 로그인을 완료해요.
  4. 로그인 완료 후 redirect_url로 이동하며 인증 쿠키가 설정돼요.
  5. 웹 서비스는 쿠키에서 SUAT(Web Access Token) 등을 확인해 로그인 상태를 처리해요.
요청 파라미터
파라미터 필수 예시 설명
game_no 필수 45 입점 시 발급받은 게임 번호
inflow_path 필수 STOVE_GAMEID (대문자) 이용자 유입 경로 식별값. 스토브 입점 시 기술PM 통해 발급
redirect_url 필수 https://test.game.onstove.com/ 로그인 후 이동할 URL(URL 인코딩). xxxx.onstove.com 도메인만 허용

요청 형식 예시

text
https://accounts.onstove.com/login
    ?inflow_path={INFLOW_PATH}
    &game_no={GAME_NO}
    &redirect_url={REDIRECT_URL}
발급 쿠키

로그인이 완료되면 인증 쿠키가 설정돼요. 웹 서비스는 SUAT로 로그인 상태를 식별해요. SUAT 외에도 로그인 전·후에 따라 다양한 쿠키가 함께 전달돼요.

쿠키 설명
SUAT STOVE User Access Token. 인증된 사용자를 식별하는 Access Token
로그인 전·후 부가 쿠키 언어·국가·규제·타임존 등 부가 정보 쿠키도 함께 발급. 아래 표 참고

로그인 전 쿠키 정보COVERAGES · LOCALE · NNTO 등
쿠키예시설명
COVERAGESde, en, es, fr, id, ja, ko, pt, th, vi, zh, zh-tw (URL Encoding)GDS Coverages 정보. GNB에서 변경 가능한 언어 목록 출력에 사용 (vi, zh, id는 Onstove 미지원, Header 전용 쿠키)
LOCALEKOOnstove 웹페이지에서 설정한 언어 코드. 최초 접속·이전 설정 없음 시 브라우저 언어 코드로 설정
NNTOKR로그인 시 접속 국가 코드 저장
PRMKO브라우저에 설정된 언어 코드 저장
REGULATIONKOREAGDS 국가별 적용 규제 정보 저장
TZAsia/SeoulGDS Timezone 정보 저장
TZ_OFFSET540GDS UTC Offset 정보 저장
dvcpc, m접속 기기 정보 (pc: PC, m: Mobile)
로그인 후 쿠키 정보SUAT · HD · PLD · SIGN · RFT 등
쿠키예시설명
SUATAccess TokenSTOVE User Access Token. 인증된 사용자를 식별하는 Access Token
HDeyJhbGciOiJIUzI1NiJ9JWT Access Token의 Header 영역 (. 구분 첫 번째 문자열)
PLDeyJhcHBsaWNhdGlvbl9ubyI6...JWT Access Token의 Payload 영역 (. 구분 두 번째 문자열)
SIGNcbzoplX31qyd9iyCDEd0...JWT Access Token의 Signature 영역 (. 구분 세 번째 문자열)
RFTeyJhbGciOiJIUzI1NiJ9...JWT Refresh Token
FOREVERY, N로그인 유지 여부 (Y: 유지, N: 미유지)
LTC0로그인 에러 코드(loginErrorCode)
LTN0로그인 오류 발생 여부(isUsed)
LTU""로그인 실패 횟수(loginTryNum). 5회 실패 시 CAPTCHA, 10회 실패 시 차단
n_uid2744ffd704f574a0...Third-party Access Token 또는 State 정보 관리용 쿠키
page_uid6da4bd9920526f15...스토브 로그인 시 매크로 방지용 쿠키

트러블슈팅

상황원인조치
로그인 페이지가 열리지 않음필수 파라미터(game_no·inflow_path·redirect_url) 누락세 파라미터를 모두 포함하고 redirect_url을 URL 인코딩하세요.
로그인 후 리다이렉트 실패redirect_url이 허용 도메인이 아님xxxx.onstove.com 도메인 범위로 주소를 지정하세요.
인증 쿠키가 확인되지 않음도메인 불일치 또는 SSL 미설정서비스 도메인·SSL 설정을 확인하고 기술PM에게 문의하세요.
유입 경로가 집계되지 않음inflow_path 미발급 또는 오기입기술PM을 통해 발급받은 값을 대문자로 정확히 전달하세요.

샘플 코드

파라미터를 지정해 스토브 로그인 페이지 URL을 생성해 호출하는 예제예요. 도메인은 환경에 맞게 적용해 주세요.

js
// 스토브 로그인 페이지 URL 생성 및 호출
function openStoveLogin({ gameNo, inflowPath, redirectUrl }) {
    const base = "https://accounts.onstove.com/login"; // 환경별 적용 필요
    const url = new URL(base);

    url.searchParams.set("inflow_path", inflowPath); // 대문자
    url.searchParams.set("game_no", gameNo);
    url.searchParams.set("redirect_url", redirectUrl); 

    // URLSearchParams가 인코딩 처리
    window.location.href = url.toString();
}

openStoveLogin({
    gameNo: "45",
    inflowPath: "STOVE_GAMEID",
    redirectUrl: "https://test.game.onstove.com/"
});

자주 묻는 질문



Q. GNB 방식과 로그인 URL 방식 중 무엇을 선택해야 하나요?
A. 로그인 외에 회원가입·언어·테마·게임 이동 같은 공통 UI까지 함께 제공하려면 GNB 방식을 권장해요. 공통 UI 없이 로그인 동선만 연동하려면 스토브 로그인 페이지를 직접 호출하는 로그인 URL 방식을 사용하면 돼요.
Q. 스토브 인증을 사용하려면 어떤 도메인이어야 하나요?
A. 연동 대상 웹 서비스가 onstove.com 계열 도메인(예: xxx.game.onstove.com)을 사용해야 해요. 외부 인프라로 구성하는 경우 SSL 인증서가 필요하며, 도메인 연결·발급은 퍼블리싱 기술 담당자(기술PM)를 통해 진행돼요.
Q. GNB의 노출 언어는 어떻게 결정되나요?
A. URL 패스 언어 → LOCALE 쿠키 → 브라우저 언어 → 서비스 기본 언어 순으로 결정해요. 앞 단계에서 유효한 언어를 찾지 못하면 다음 단계로 넘어가고, 전체 웹 서비스의 최종 fallback은 영어예요. GNB는 언어 변경 시 페이지 새로고침을 전제로 동작해요.
Q. GNB 메뉴를 서비스에 맞게 커스텀할 수 있나요?
A. 지정된 커스텀 영역(customMenuArea)에서만 확장할 수 있어요. 기본 메뉴를 비활성화하고(widget.stoveMenu.active=false) GNB가 전달하는 mounted/menu-mounted 이벤트를 수신해 서비스 메뉴를 직접 렌더링해요. 커스텀 영역 외에는 커스텀을 지원하지 않아요.
Q. 런타임 중에 바꿀 수 있는 GNB 옵션은 무엇인가요?
A. mount() 반환 인스턴스의 updateOptions()serviceTitlewidget.stoveMenu만 런타임 변경할 수 있어요. 나머지 옵션은 무시되므로 초기 mount() 시점에 지정해야 해요.
Q. 로그인 URL 방식에서 로그인 결과는 어떻게 확인하나요?
A. 로그인이 완료되면 redirect_url로 이동하며 인증 쿠키가 설정돼요. 웹 서비스는 응답 쿠키의 SUAT(Web Access Token)로 로그인 상태를 확인해요. SUAT 외에도 언어·국가·규제 등 부가 쿠키가 함께 전달돼요.
Q. redirect_url에 제한이 있나요?
A. redirect_urlxxxx.onstove.com 도메인으로 사용할 수 있는 페이지로만 제한돼요. 타깃 페이지는 연동 전 퍼블리싱 기술 담당자에게 확인받아야 하며, 게임 서버와 스토브 API 서버 간 통신을 위한 방화벽 설정도 사전에 완료되어 있어야 해요.
Q. 로그인 후 발급된 SUAT는 어떻게 검증하나요?
A. 발급된 SUAT는 서버 사이드에서 유효성을 검증해야 해요. 반복 검증 호출을 줄이는 캐시 최적화는 [웹 서비스 세션 최적화](/docs/stove/guide/session) 가이드를 참고해 주세요.