로그인 사용자 확인
위젯은 브라우저에서 돌기 때문에 누구든 userId 를 지어내 보낼 수 있습니다. 여러분 서버가 서명한 신원만 「확인됨」으로 표시해, 계정 관련 답변을 안심하고 할 수 있게 합니다.
동작
- 콘솔 → 프로젝트 설정에서 시크릿을 만듭니다(
sk_…). 한 번만 보여 주니 바로 서버 환경변수에 넣으세요. - 여러분 서버가 로그인한 회원의
userId를 시크릿으로 서명합니다 —HMAC-SHA256(시크릿, userId)의 16진수 문자열. - 페이지에서
PolyTalk.identify({ userId, signature })로 넘깁니다. - PolyTalk 서버가 같은 방식으로 검증해, 맞으면 콘솔에 확인됨으로 표시합니다.
시크릿은 절대 브라우저로 보내지 마세요. 시크릿이 새면 누구나 다른 회원을 사칭할 수 있습니다. 새었다면 콘솔에서 새로 만들면 이전 서명은 즉시 무효가 됩니다.
서명 만들기
import { createHmac } from 'node:crypto';
const signature = createHmac('sha256', process.env.POLYTALK_SECRET)
.update(user.id)
.digest('hex');import hmac, hashlib, os
signature = hmac.new(
os.environ["POLYTALK_SECRET"].encode(),
user_id.encode(),
hashlib.sha256,
).hexdigest()$signature = hash_hmac('sha256', $userId, getenv('POLYTALK_SECRET'));페이지에 넘기기
서버가 만든 값을 페이지에 심거나, 로그인 정보를 주는 API 에 함께 실어 보내면 됩니다.
whenPolyTalk((pt) => {
pt.identify({
userId: currentUser.id,
signature: currentUser.polytalkSignature, // 서버가 만든 값
emails: [currentUser.email],
});
});서명이 없거나 틀리면
문의는 거부하지 않습니다. 비로그인 문의는 정상적인 경우이기 때문입니다. 다만 신원은 남기지 않고, 적힌 이메일은 「미확인」으로 표시됩니다.