/* eslint-disable */ import React, { useState, useEffect } from "react" const SDK_SCRIPT_SNIPPET = `` const SIGNIN_ROOT_SNIPPET = `
` const INIT_SNIPPET = `HamsooID.init({ client_id: "your-client-id", redirect_uri: "https://your-site.com/callback", scope: "openid profile email", response_mode: "web_message", // برای پاپ‌آپ موبایلی onSuccess: ({ code, state }) => { // Exchange code for tokens at: POST /oauth/token console.log("Authorization code:", code, "State:", state) }, onError: (err) => { console.error("Sign in error:", err) }, })` const TOKEN_EXCHANGE_SNIPPET = `import requests resp = requests.post( "https://account.hamsoo.me/oauth/token", data={ "grant_type": "authorization_code", "code": "", "redirect_uri": "https://your-site.com/callback", "client_id": "your-client-id", "client_secret": "", }, ) tokens = resp.json() print(tokens["access_token"])` export default function DevelopersPage() { const [sdkLoaded, setSdkLoaded] = useState(false) useEffect(() => { const script = document.createElement("script") script.src = "/sdk/identity-widget.js" script.async = true script.onload = () => setSdkLoaded(true) script.onerror = () => console.error("Failed to load Hamsoo SDK") document.head.appendChild(script) }, []) return (

مستندات توسعه‌دهندگان / Developer Documentation

۵ دقیقه شروع کنید / Quickstart

  1. 1. ثبت اپلیکیشن: در داشبورد هوامله (https://account.hamsoo.me) یک application ثبت کنید. client_id و redirect_uris را ثبت کنید. گام scopes: openid profile email phone.
  2. 2. SDK را اضافه کنید: کد زیر را در هدر یا انتهای body سایت خود قرار دهید:
    {SDK_SCRIPT_SNIPPET}
  3. 3. دکمه را جایگذاری کنید:
    {SIGNIN_ROOT_SNIPPET}
    {INIT_SNIPPET}
  4. 4. backend: تبادل code برای توکن:
    {TOKEN_EXCHANGE_SNIPPET}

مرجع SDK / SDK Reference

روش / Method توضیحات / Description
HamsooID.init({"{ options }"}) ابزار SDK را مقداردهی و دکمه را render می‌کند
onSuccess({"{ code, state }"}) وقتی کاربر با موفقیت احراز هویت می‌شود، این تابع صدا زده می‌شود
onError({"{ error }"}) وقتی احراز هویت شکست خورد، این تابع صدا زده می‌شود

ارائه‌دهنده API / API Endpoints

تمام endpoints روی دامنه account.hamsoo.me قابل دسترسی هستند.

Endpoint روش / Method توضیحات / Description
GET /.well-known/openid-configuration GET OpenID Discovery document
GET /oauth/jwks GET JSON Web Key Set for JWT verification
GET /oauth/authorize GET/POST Authorization endpoint (PKCE + consent)
POST /oauth/token POST Exchange code for tokens (PKCE)
GET /oauth/userinfo GET User claims (scope-dependent)
GET /sso/login GET Central SSO login page (account chooser + MFA + Passkey)
POST /api/v1/security/pow/challenge POST Self-hosted proof-of-work challenge (anti-bot)

مباحث امنیتی / Security Best Practices

  • حتماً PKCE استفاده کنید: هر JWT Authorization Request باید شامل code verifier و challenge باشد.
  • پارامتر state را ولید کنید: همیشه پاسخ state را با درخواست اصلی مقایسه کنید.
  • redirect_uri را تأیید کنید: redirect_uri ثبت‌شده است و با redirect_uris اپلیکیشن تطابق دارد.
  • response_mode=web_message برای پاپ‌آپ‌ها استفاده کنید: این روش redirect صفحه کامل را حذف می‌کند و تجربه modal ایجاد می‌کند.
  • Self-hosted PoW برای لاگین: هر درخواست لاگین باید challenge را حل کند (سبک ALTCHA) که فعالیت bot را کاهش می‌دهد.

مدیریت اپلیکیشن / App Management

اپلیکیشن‌های خود را در پورتال مدیریت کنید:{" "} account.hamsoo.me/admin/applications

) }