PolyTalk

로그인 사용자 확인

위젯은 브라우저에서 돌기 때문에 누구든 userId 를 지어내 보낼 수 있습니다. 여러분 서버가 서명한 신원만 「확인됨」으로 표시해, 계정 관련 답변을 안심하고 할 수 있게 합니다.

동작

  1. 콘솔 → 프로젝트 설정에서 시크릿을 만듭니다(sk_…). 한 번만 보여 주니 바로 서버 환경변수에 넣으세요.
  2. 여러분 서버가 로그인한 회원의 userId 를 시크릿으로 서명합니다 — HMAC-SHA256(시크릿, userId) 의 16진수 문자열.
  3. 페이지에서 PolyTalk.identify({ userId, signature }) 로 넘깁니다.
  4. PolyTalk 서버가 같은 방식으로 검증해, 맞으면 콘솔에 확인됨으로 표시합니다.
시크릿은 절대 브라우저로 보내지 마세요. 시크릿이 새면 누구나 다른 회원을 사칭할 수 있습니다. 새었다면 콘솔에서 새로 만들면 이전 서명은 즉시 무효가 됩니다.

서명 만들기

Node.js
import { createHmac } from 'node:crypto';

const signature = createHmac('sha256', process.env.POLYTALK_SECRET)
  .update(user.id)
  .digest('hex');
Python
import hmac, hashlib, os

signature = hmac.new(
    os.environ["POLYTALK_SECRET"].encode(),
    user_id.encode(),
    hashlib.sha256,
).hexdigest()
PHP
$signature = hash_hmac('sha256', $userId, getenv('POLYTALK_SECRET'));

페이지에 넘기기

서버가 만든 값을 페이지에 심거나, 로그인 정보를 주는 API 에 함께 실어 보내면 됩니다.

JavaScript
whenPolyTalk((pt) => {
  pt.identify({
    userId: currentUser.id,
    signature: currentUser.polytalkSignature, // 서버가 만든 값
    emails: [currentUser.email],
  });
});

서명이 없거나 틀리면

문의는 거부하지 않습니다. 비로그인 문의는 정상적인 경우이기 때문입니다. 다만 신원은 남기지 않고, 적힌 이메일은 「미확인」으로 표시됩니다.