LogoLogo
  • 샵바이 스킨 알아보기
    • 샵바이 스킨 설명서
    • 오로라 리액트(통합형) 스킨 개발 가이드
    • 오로라 리액트(통합형) 릴리즈 노트
    • 오로라 바닐라(개별형) 릴리즈 노트
    • 1:1 문의하기
  • 오로라 개별형 스킨 개발 가이드
    • 개발 프로세스
      • 등록
      • 개발
        • 개발 환경 구성하기
        • 스킨 디렉토리 구조
      • 설치
    • 기본 API 이해하기
      • 샵바이 API 호출 가이드
        • OAuth 2.0 적용 가이드
      • 외부 스크립트 호출 가이드
    • 화면별 API 활용 가이드
      • 공통 영역
        • 공통 상단
        • 공통 하단
        • 디자인 팝업
        • 슬라이드 메뉴 (모바일 전용)
        • 최근 본 상품
      • 메인 화면
        • 배너 영역
        • 상품진열 영역
        • 인스타그램 연동
      • 회원가입
      • 로그인
      • 간편 로그인
      • 휴대폰 본인인증
      • 상품 리스트
      • 상품 상세
        • 상품 기본 정보
        • 상품 상세 배너 (모바일 전용)
        • 상품 상세정보 (탭)
        • 배송/반품/교환 안내 (탭)
        • 상품후기 (탭)
        • 상품문의 (탭)
        • 관련상품
      • 장바구니
      • 주문서
      • 마이페이지 > 쇼핑정보
        • 주문목록/배송조회
        • 취소/반품/교환 내역
        • 주문 상세
        • 좋아요
      • 마이페이지 > 혜택관리
        • 쿠폰
        • 적립금
      • 마이페이지 > 회원정보
        • 회원정보 수정
        • 회원탈퇴
        • 배송지 관리
      • 마이페이지 > 나의 게시글
        • 1:1 문의
        • 상품문의
        • 상품후기
      • 상품후기 게시판
      • 일반 게시판
      • 기획전
    • KCP 휴대폰 본인인증 연동 (iOS/AOS)
  • 앱 개발 가이드
    • [샵바이] 웹훅(webhook) 가이드
    • [고도몰] 웹훅(webhook) 가이드
  • 추천 콘텐츠
    • 추천 콘텐츠
      • [간편 로그인] SNS 연동 기능 개발 가이드
      • [공통] 마이페이 API 화면가이드
      • [엔터프라이즈] 선물하기 기능 (배송지 나중입력)
      • [엔터프라이즈] 카카오 싱크 신청 가이드
      • [엔터프라이즈] 카카오 싱크 회원가입 API 화면가이드
      • [엔터프라이즈] 이니렌탈(렌탈결제) API 화면가이드
      • [엔터프라이즈] 외부 회원 연동 가이드
      • [엔터프라이즈] 외부 적립금 전환 가이드
      • [엔터프라이즈] 외부 적립금 연동가이드
      • [엔터프라이즈] 사은품 API 화면가이드
      • [엔터프라이즈] PG신청 가이드 (2024/4/1 업데이트)
      • [엔터프라이즈] 카카오 픽셀 설치 가이드
      • [엔터프라이즈]정기결제(배송) API 화면가이드
      • [프로/엔터프라이즈] 쇼핑몰에 인스타그램 위젯을 적용해보세요!
      • [베이직/프로] 카카오싱크 신청 가이드
      • [웹훅 추가] 주문정보 웹훅(Webhook)이란?
      • [웹훅 추가] 회원정보 변경 및 회원탈퇴
      • [웹훅 추가] 앱 설치 및 삭제
      • shop by API, POSTMAN에 추가하기
      • [글로벌] 글로벌 기능 가이드
        • 사용 프로세스
          • 엑심베이 PG 계약
          • 개발 환경 세팅
          • shop by 어드민 세팅
          • 쇼핑몰 스킨 개발
            • 언어/통화 설정
            • 상품/전시 설정
            • 주문서 조회
            • 주문 예약하기
            • 회원 등록
        • 글로벌 주문/환불 프로세스
    • FAQ
      • 에러코드_ (1) 주문
      • 에러코드_ (2) 프로모션
      • 에러코드_ (3) 클레임
      • 쿠폰 코드 API 에러메시지 안내
      • 장바구니/주문결제 에러코드 안내
      • 배송타입 및 택배사코드 안내
      • 파트너어드민 매출내역 조회기준
      • shop api error response 안내
      • server API로 주문의 외부 유입경로 집계 방법
      • 은행코드 안내
      • 7/15 스킨 에디터 업데이트 주의사항
        • 모바일_업데이트 전 템플릿 코드
        • PC_업데이트 전 템플릿 코드
        • 업데이트 후/전 템플릿 코드 비교
      • [샵바이 엔터프라이즈] server API 호출방법
      • [샵바이 엔터프라이즈] 파트너 어드민에서 상품 노출은 미리 해두고, 판매 기간은 미래시점으로 설정할 수 있는 기능이 있을까요?
      • [샵바이 엔터프라이즈] 파트너사 담당MD 일괄변경 어떻게하나요?
Powered by GitBook
On this page
  • 🤖 기능
  • 📝 내용
  • 1. baseURL이 shop API인 경우
  • 2. baseURL이 다른 값이거나 미포함 시

Was this helpful?

  1. 오로라 개별형 스킨 개발 가이드
  2. 기본 API 이해하기
  3. 샵바이 API 호출 가이드

OAuth 2.0 적용 가이드

샵바이 API 호출 시 OAuth 2.0 적용 방법을 안내합니다.

Previous샵바이 API 호출 가이드Next외부 스크립트 호출 가이드

Last updated 6 months ago

Was this helpful?

🤖 기능

OAuth 2.0은 accessToken과 refreshToken을 사용하여 인증 상태를 관리하게 됩니다. 기본 스킨에서 OAuth 2.0은 다음과 같이 동작합니다.

  • 만료된 accessToken으로 shop API 요청을 보내는 경우, accessToken을 갱신하고 갱신된 accessToken으로 API를 호출하게 됩니다.

  • accessToken과 refreshToken이 모두 만료된 경우, 토큰이 갱신되지 않으며, 만료된 리프레시 토큰입니다. 라는 문구가 노출되고 로그인 페이지로 이동합니다.

기본 스킨에서 제공하는 것을 사용하지 않고 직접 shop API를 호출하는 경우, OAuth 2.0의 토큰 갱신/재요청 처리를 위해 별도로 처리가 필요합니다.

🖇️ 관련 문서

shop API를 직접 호출하여 사용하는 경우, OAuth 2.0 적용 방법에 관한 내용입니다. 오로라 스킨을 기준으로 OAuth 2.0을 위해 별도 처리가 필요한 부분 위주로 안내합니다.

오로라 리액트 스킨을 사용하시는 경우, shop API를 호출하실 때, fetchHttpRequest를 사용해 주시면 OAuth 2.0을 별도 처리 없이 적용하실 수 있습니다. refreshToken 만료 시 토큰 만료 alert가 노출되지 않는다면 try/catch로 catchError 처리가 필요할 수 있습니다.

📝 내용

shop API를 직접 호출하여 사용하는 경우, OAuth 2.0 적용 방법에 관한 내용입니다. 오로라 스킨을 기준으로 OAuth 2.0을 위해 별도 처리가 필요한 부분 위주로 안내합니다.

오로라 리액트 스킨을 사용하시는 경우, shop API를 호출하실 때, fetchHttpRequest를 사용해 주시면 OAuth 2.0을 별도 처리 없이 적용하실 수 있습니다. refreshToken 만료 시 토큰 만료 alert가 노출되지 않는다면 try/catch로 catchError 처리가 필요할 수 있습니다.


shopby의 API는 baseURL 값으로 shop API인지 구분합니다. shop API 요청 시 옵션으로 보내는 baseURL 값에 따라서 OAuth 2.0 적용을 위해 처리해야 하는 범위가 달라집니다.

1. baseURL이 shop API인 경우

제공범위

  • shop API 요청 시 Shop-By-Authorization 헤더를 보내지 않더라도, Shop-By-Authorization 헤더로 accessToken 값을 보내줍니다.

  • 만료된 accessToken으로 API를 요청한 경우, accessToken이 갱신됩니다.

추가 처리 필요 범위

  1. accessToken이 갱신된 이후, 재요청 처리가 필요합니다.

    • API의 응답이 401 에러로 발생할 때, 요청한 API를 동일하게 다시 호출해 주시면 갱신된 토큰으로 재요청됩니다.

  2. 토큰 갱신 시도 시 accessToken/refreshToken이 모두 만료된 경우, 토큰 만료 alert가 노출되어야 합니다.

    • 만약 토큰 만료 alert가 노출되지 않는다면 try/catch에서 해당 에러에 대한 처리가 필요할 수 있습니다.

유의 사항

  • accessToken 갱신의 경우, API가 초기화된 이후에 실행해야 에러 없이 동작하게 됩니다. 만약 Cannot read properties of null (reading 'auth')과 같은 에러가 발생하게 된다면 이는 API가 초기화되지 않은 시점에 실행된 것입니다.

  • 해당 경우에는 아래 코드 예시와 같이 EventManager에서 'PAGE_LOAD_COMPLETED' 라는 이벤트에 등록하여 처리해 주시면 됩니다.

✓ 예시코드

...
const fetchShopApiWithBaseURL = async () => {
  const fetchProfileApi = async () => {
    const host = 'https://alpha-shop-api.e-ncp.com';
    
    // baseURL이 shop API인 경우
    const res = await fetch(`${host}/profile`, {
      ...
      baseURL: host,
    });
    if (!res.ok) {
      throw await res.json();
    }

    return res;
  };
  try {
    await fetchProfileApi();
  } catch (error) {
    if (error.status === 401) {
      // API 재요청
      await fetchProfileApi();
    } else {
      throw error;
    }
  }
}; 
  
...

// API가 초기화되지 않은 시점에서 실행 시 에러가 발생할 수 있습니다. 에러가 발생한다면 아래와 같이 API 초기화 이후에 실행될 수 있도록 처리하실 수 있습니다.
ShopbySkin.EventManager.on('PAGE_LOAD_COMPLETED', () => {
  fetchShopApiWithBaseURL();
});
...

2. baseURL이 다른 값이거나 미포함 시

제공범위

  • 일반적인 API 호출과 동일하게 동작합니다.

    • Shop-By-Authorization 헤더에 accessToken 값이 자동으로 보내지지 않습니다.

    • 만료된 accessToken으로 API를 요청하더라도, accessToken 갱신이 되지 않습니다.

추가 처리 필요 범위

  1. shop API 요청 시 Shop-By-Authorization 헤더에 accessToken을 보내줘야 합니다.

  2. accessToken이 만료된 경우, accessToken 갱신이 필요합니다.

    • accessToken 갱신을 처리하실 때 해당 함수를 사용하여 처리해 주시면 됩니다.

      • ShopbySkin.utils.renewAccessToken()

  3. accessToken이 갱신된 이후, 재요청 처리를 해줘야 합니다.

  4. 토큰 갱신 시도 시 accessToken/refreshToken 이 모두 만료된 경우, 토큰 만료 alert가 노출되어야 합니다.

    • 만약 토큰 만료 alert가 노출되지 않는다면 try/catch에서 해당 에러에 대한 처리가 필요할 수 있습니다.

유의사항

  • accessToken 갱신의 경우, API가 초기화된 이후에 실행해야 에러 없이 동작하게 됩니다. 만약 Cannot read properties of null (reading 'auth')과 같은 에러가 발생하게 된다면 이는 API가 초기화되지 않은 시점에 실행된 것입니다.

  • 해당 경우에는 아래 코드 예시와 같이 EventManager에서 'PAGE_LOAD_COMPLETED' 라는 이벤트에 등록하여 처리해 주시면 됩니다.

✓ 예시코드

...
const fetchShopApiWithOutBaseURL = async () => {
  const fetchProfileApi = async () => {
    const headers = {
      'Shop-By-Authorization': `Bearer ${accessToken}`,
      ...,
    };
    
    const host = 'https://alpha-shop-api.e-ncp.com';
    
    // baseURL이 없는 경우
    const res = await fetch(`${host}/profile`, {
      headers,
    });
    if (!res.ok) throw await res.json();

    return res;
  };
  try {
    await fetchProfileApi();
  } catch (error) {
    if (error.status === 401) {
      // 토큰 갱신 처리
      await ShopbySkin.utils.renewAccessToken();
        
      // API 재요청 처리
      await fetchProfileApi();
    } else {
      throw error;
    }
  }
};

...

// API가 초기화되지 않은 시점에서 실행 시 에러가 발생할 수 있습니다. 에러가 발생한다면 아래와 같이 API 초기화 이후에 실행될 수 있도록 처리하실 수 있습니다.
ShopbySkin.EventManager.on('PAGE_LOAD_COMPLETED', () => {
  fetchShopApiWithOutBaseURL();
});
...

오로라(PC+모바일) 개별형 스킨

오로라 리액트 통합형 스킨

shop API 문서

v.1.4.3 릴리즈노 노트 바로가기
v.1.7.2 릴리즈 노트 바로가기
v.1.7.3 릴리즈 노트 바로가기
OAuth 2.0 API 바로가기