@php // $panelUser: admin có thể đang xem token của nhân viên khác. $user = isset($panelUser) ? $panelUser : auth()->user(); // Chỉ chủ tài khoản được lưu token mới; admin chỉ xem tình trạng. $canManage = !isset($canManage) || $canManage; $expiresAt = (int)$user->meta_token_expires_at; $hasToken = !empty($user->meta_access_token); $isSystem = $user->meta_token_mode === \App\Constants\MetaAdsConstant::TOKEN_MODE_SYSTEM_USER; $daysLeft = $expiresAt > 0 ? (int)floor(($expiresAt - time()) / 86400) : null; @endphp
Tình trạng token @if(!$hasToken) CHƯA CÓ TOKEN @elseif($expiresAt === 0) KHÔNG THỜI HẠN {{ $isSystem ? 'System User Token' : 'Không có lịch hết hạn công bố' }} @elseif($daysLeft !== null && $daysLeft <= \App\Constants\MetaAdsConstant::TOKEN_WARNING_DAYS) CÒN {{ max($daysLeft, 0) }} NGÀY hết hạn {{ date('d/m/Y H:i', $expiresAt) }} @else CÒN {{ $daysLeft }} NGÀY hết hạn {{ date('d/m/Y H:i', $expiresAt) }} @endif @if($user->meta_token_obtained_at) Lấy lúc {{ date('d/m/Y H:i', strtotime($user->meta_token_obtained_at)) }} · chế độ {{ $user->meta_token_mode ?: 'USER_TOKEN' }} @endif
@if($canManage) Dùng token không thời hạn @else Token của {{ $user->full_name }} @endif
Muốn token không bao giờ hết hạn? Facebook Login chỉ cấp tối đa long-lived 60 ngày — không có cách nào lấy token vĩnh viễn qua đăng nhập thường. Token không thời hạn chỉ có ở System User Token (mục 11.3), tạo trong Business Manager:
  1. Business Settings → Users → System Users → tạo System User.
  2. Assign đúng các Ad Account cần đọc cho System User đó.
  3. Generate New Token → chọn đúng app {{ $user->meta_app_id }} → tick quyền ads_read.
  4. Phần Token Expiration chọn Never.
  5. Copy token và dán vào ô dưới đây.
{{ csrf_field() }}
Token được kiểm tra (debug_token + gọi thử /me/adaccounts) trước khi lưu; sai thì token cũ giữ nguyên. System User Token không bị đổi qua fb_exchange_token để không mất tính không hết hạn.