پلیر امن XAPlayer در Next.js
نمایش پلیر امن XAPlayer در یک کامپوننت سروری Next.js (App Router)؛ کلید API فقط روی سرور و توکن تازه برای هر بازدید.
همهی راهنماها
شروع
شروع سریع: اولین دورهی قفلشده در ۱۰ دقیقهامنیت ویدیو: رمزگذاری، واترمارک و آنچه هیچ پلیری نمیتواندنصب روی سایت شما
قرار دادن پلیر امن در وردپرسفروش دورهی ویدیویی با ووکامرس و پلیر امنپلیر امن XAPlayer در مودلپلیر امن XAPlayer در لاراولپلیر امن XAPlayer با Node.js و Expressپلیر امن XAPlayer در Next.jsپلیر امن XAPlayer با پایتون: جنگو و فلسکسایت HTML، سایتساز یا بدون سروربرای فروشندهها
بارگذاری ویدیو و قفلگذاری خودکارصدور لایسنس، محدودیت دستگاه و صدور گروهیجلوگیری از دانلود ویدیو با IDM: راهنمای کامل برای مدرسهاقفلگذاری ویدیو در وردپرس و ووکامرسبرای دانشجوها
راهنمای دانشجو: تماشای دوره با کد لایسنسپلتفرمها: اندروید، آیفون، ویندوز، مک و لینوکستماشای دوره در اندرویدتماشای دوره در آیفون و آیپدتماشای دوره در ویندوز، مک و لینوکسبرای برنامهنویسها
مرجع API: قرار دادن پلیر امن در هر سایتدر Next.js توکن را در یک کامپوننت سروری میگیرید؛ پس کلید API هیچوقت به مرورگر نمیرسد. این نمونه برای App Router است.
پیش از شروع#
- در پنل XAPlayer به «تنظیمات» بروید و در بخش «کلید API» یک کلید بسازید. کلید فقط یک بار نمایش داده میشود؛ همان لحظه کپیاش کنید.
- در «سایتهای مجاز برای نمایش پلیر» نشانی کامل سایتتان را اضافه کنید، مثلاً https://academy.example.com. اگر سایت با www هم باز میشود، آن را هم اضافه کنید.
- شناسهی دوره را بردارید: در «تنظیمات»، بخش «راهنمای نمایش پلیر در سایت شما» دوره را انتخاب کنید تا شناسهاش در نمونهکد نوشته شود. همان بخش آخر نشانی صفحهی دوره در پنل هم هست.
- بستهی server-only را نصب کنید: npm install server-only
# .env.local (never prefix it with NEXT_PUBLIC_)
XAPLAYER_API_KEY=xap_sk_...
تابع سروری و صفحه#
// lib/xaplayer.ts
import 'server-only';
type Viewer = { id: string; name?: string; phone?: string };
export async function playerUrl(courseId: string, viewer: Viewer): Promise<string> {
const res = await fetch('https://xaplayer.ir/api/v1/embed-tokens', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.XAPLAYER_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ courseId, viewer }),
cache: 'no-store', // a fresh token for every visit
});
if (!res.ok) throw new Error(`XAPlayer ${res.status}`);
const data: { url: string } = await res.json();
return data.url;
}
اگر کار نکرد#
| نشانه | علت و راهحل |
|---|---|
| جای پلیر خالی است یا مرورگر میگوید «اجازهی اتصال ندارد» | نشانی سایت در «سایتهای مجاز» نیست یا با www/بدون www فرق دارد. نشانی دقیق صفحه را اضافه کنید. |
| خطای ۴۰۱ (unauthorized) | کلید API اشتباه است یا کلید تازهای ساختهاید و کلید قبلی از کار افتاده. کلید را دوباره کپی کنید. |
| خطای ۴۰۴ (not_found) | شناسهی دوره یا ویدیو اشتباه است یا متعلق به حساب دیگری است. |
| خطای ۴۰۰ (bad_request) | بدنهی درخواست ناقص است: دقیقاً یکی از courseId یا videoId را بفرستید و viewer.id را خالی نگذارید. |
| پلیر بعد از چند ساعت «زمان صفحه تمام شده» میگوید | توکن منقضی شده. هر بار که صفحه باز میشود توکن تازه بگیرید و نشانی پلیر را کش نکنید. |
XAPlayer را ۱۴ روز رایگان، با ۱۰ لایسنس هدیه امتحان کنید.
دورهی خود را رایگان امتحان کنید