پلیر امن XAPlayer با Node.js و Express

نصب روی سایت شما۳ دقیقه مطالعه

گرفتن توکن پخش روی سرور Node.js با fetch و نمایش پلیر امن XAPlayer در صفحه‌ی درس اپلیکیشن Express.

همه‌ی راهنماها

یک تابع کوچک می‌نویسید که برای کاربر واردشده توکن پخش می‌گیرد، و یک مسیر Express که پلیر را نمایش می‌دهد. Node.js نسخه‌ی ۱۸ به بالا fetch را خودش دارد و بسته‌ی اضافه لازم نیست.

پیش از شروع#

  1. در پنل XAPlayer به «تنظیمات» بروید و در بخش «کلید API» یک کلید بسازید. کلید فقط یک بار نمایش داده می‌شود؛ همان لحظه کپی‌اش کنید.
  2. در «سایت‌های مجاز برای نمایش پلیر» نشانی کامل سایت‌تان را اضافه کنید، مثلاً https://academy.example.com. اگر سایت با www هم باز می‌شود، آن را هم اضافه کنید.
  3. شناسه‌ی دوره را بردارید: در «تنظیمات»، بخش «راهنمای نمایش پلیر در سایت شما» دوره را انتخاب کنید تا شناسه‌اش در نمونه‌کد نوشته شود. همان بخش آخر نشانی صفحه‌ی دوره در پنل هم هست.
.env
# .env (or your host's environment settings)
XAPLAYER_API_KEY=xap_sk_...

تابع گرفتن توکن#

xaplayer.js
// xaplayer.js (Node 18 or later: fetch is built in)
const XAPLAYER = 'https://xaplayer.ir/api/v1';

export async function playerUrl({ courseId, videoId, user }) {
  const res = await fetch(`${XAPLAYER}/embed-tokens`, {
    method: 'POST',
    headers: {
      Authorization: `Bearer ${process.env.XAPLAYER_API_KEY}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      ...(videoId ? { videoId } : { courseId }),
      viewer: { id: String(user.id), name: user.name },
    }),
  });
  if (!res.ok) throw new Error(`XAPlayer ${res.status}: ${await res.text()}`);
  const { url } = await res.json();
  return url;
}

مسیر صفحه‌ی درس#

// server.js
import express from 'express';
import { playerUrl } from './xaplayer.js';

const app = express();

// requireLogin and userBoughtCourse are your own: your sign-in and your orders.
app.get('/courses/:courseId/watch', requireLogin, async (req, res, next) => {
  try {
    if (!(await userBoughtCourse(req.user, req.params.courseId))) return res.sendStatus(403);
    const url = await playerUrl({ courseId: req.params.courseId, user: req.user });
    res.render('watch', { url }); // or any template engine you use
  } catch (err) {
    next(err);
  }
});

اگر کار نکرد#

نشانهعلت و راه‌حل
جای پلیر خالی است یا مرورگر می‌گوید «اجازه‌ی اتصال ندارد»نشانی سایت در «سایت‌های مجاز» نیست یا با www/بدون www فرق دارد. نشانی دقیق صفحه را اضافه کنید.
خطای ۴۰۱ (unauthorized)کلید API اشتباه است یا کلید تازه‌ای ساخته‌اید و کلید قبلی از کار افتاده. کلید را دوباره کپی کنید.
خطای ۴۰۴ (not_found)شناسه‌ی دوره یا ویدیو اشتباه است یا متعلق به حساب دیگری است.
خطای ۴۰۰ (bad_request)بدنه‌ی درخواست ناقص است: دقیقاً یکی از courseId یا videoId را بفرستید و viewer.id را خالی نگذارید.
پلیر بعد از چند ساعت «زمان صفحه تمام شده» می‌گویدتوکن منقضی شده. هر بار که صفحه باز می‌شود توکن تازه بگیرید و نشانی پلیر را کش نکنید.

XAPlayer را ۱۴ روز رایگان، با ۱۰ لایسنس هدیه امتحان کنید.

دوره‌ی خود را رایگان امتحان کنید