رفتن به محتوای اصلی
های چت

شناسایی کاربر

کاربران واردشده سایتتان را با امضای امن به های چت معرفی کنید تا تاریخچه گفتگو روی همه دستگاه‌ها یکی باشد.

وقتی کاربر در سایت شما وارد حسابش شده، می‌توانید او را به های چت معرفی کنید:

HiChat('setUser', {
  id: '1024',
  hash: 'امضای ساخته‌شده در سرور',
  name: 'مریم رضایی',
  phone: '09121234567',
  email: 'maryam@example.com',
  data: { plan: 'طلایی' }
})

چرا امضا لازم است؟

هر کسی می‌تواند در مرورگر خودش setUser را با شناسه دلخواه صدا بزند. برای اینکه کسی نتواند خودش را جای کاربر دیگری جا بزند، شناسه باید در سرور شما با کلید هویت سایت امضا شود. کلید هویت را در پنل، تنظیمات ← امنیت می‌بینید. این کلید را هیچ‌وقت در کد سمت مرورگر نگذارید.

فقط کاربرانی که امضای درست دارند «تاییدشده» حساب می‌شوند و گفتگوهایشان روی دستگاه‌های مختلف یکی می‌شود. اگر گزینه فقط کاربران تاییدشده را روشن کنید، setUser بدون امضای درست رد می‌شود.

ساخت امضا

امضا HMAC-SHA256 شناسه کاربر با کلید هویت است، به شکل hex:

Node.js

import { createHmac } from 'node:crypto'
const hash = createHmac('sha256', process.env.HICHAT_IDENTITY_SECRET).update(String(user.id)).digest('hex')

PHP

$hash = hash_hmac('sha256', (string) $user->id, getenv('HICHAT_IDENTITY_SECRET'));

Python

import hmac, hashlib, os
hash = hmac.new(os.environ['HICHAT_IDENTITY_SECRET'].encode(), str(user.id).encode(), hashlib.sha256).hexdigest()

C#

using var h = new HMACSHA256(Encoding.UTF8.GetBytes(secret));
var hash = Convert.ToHexString(h.ComputeHash(Encoding.UTF8.GetBytes(userId))).ToLowerInvariant();

Go

m := hmac.New(sha256.New, []byte(secret))
m.Write([]byte(userID))
hash := hex.EncodeToString(m.Sum(nil))

خروج کاربر

بعد از خروج از حساب، HiChat('resetUser') را صدا بزنید تا گفتگوهای او برای نفر بعدی که از همان مرورگر استفاده می‌کند دیده نشود.