// === API 설정 화면 === const { useState: useStateSet } = React; function SettingsScreen() { const [creds, setCreds] = useStateSet(window.API.loadCreds()); const [showSecret, setShowSecret] = useStateSet(false); const [confirmClear, setConfirmClear] = useStateSet(false); const update = (patch) => setCreds(prev => ({ ...prev, ...patch })); const save = () => { window.API.saveCreds(creds); window.toast("자격증명이 브라우저에 저장되었습니다"); }; const clear = () => { window.API.clearCreds(); setCreds({}); setConfirmClear(false); window.toast("자격증명이 삭제되었습니다"); }; return (

API 설정

ISVM 및 네이버 커머스 API 자격증명을 관리합니다

{/* Security warning */}
⚠️
보안 주의사항
  • 자격증명은 이 브라우저의 localStorage에만 저장됩니다 — 서버나 코드에 저장되지 않습니다.
  • 네이버 client_secret은 절대 브라우저에서 직접 사용하지 마세요. 서버 프록시에서만 사용해야 합니다.
  • 채팅, GitHub, 공개된 곳에 시크릿이 노출된 경우 즉시 재발급하세요.
  • 공유 PC에서는 작업 후 반드시 "전체 삭제"를 누르세요.
{/* ISVM */}
IS
ISVM Crawler API
자격증명 불필요 (CORS 화이트리스트만)
ISVM 서버는 인증 없이 동작하며, 호출 도메인이 서버측 CORS 화이트리스트에 등록되어 있어야 합니다.
{/* Naver */}
N
네이버 커머스 API
update({ naver_client_id: e.target.value.trim() })} />
update({ naver_client_secret: e.target.value.trim() })} />
왜 프록시가 필요한가?
  1. 네이버 OAuth 토큰 발급은 bcrypt(client_id + "_" + timestamp, client_secret) 서명을 요구합니다 → 시크릿이 노출됩니다
  2. 네이버는 호출 IP를 화이트리스트로 검증합니다 (브라우저 IP는 매번 바뀜)
  3. 브라우저 CORS 정책으로 직접 호출이 차단됩니다
update({ proxy_url: e.target.value.trim() })} />
브라우저는 이 URL로만 요청합니다. 프록시 서버가 client_secret을 보관하고 네이버 API에 서명된 요청을 전달합니다.
update({ smartstore_id: e.target.value.trim() })} />
localStorage 키: smartfarm.creds.v1
setConfirmClear(false)} title="자격증명 삭제 확인" footer={<> }>
이 브라우저에 저장된 모든 자격증명이 삭제됩니다. 작업을 마친 공유 PC에서 반드시 실행하세요.
); } window.SettingsScreen = SettingsScreen;