[object Object]

← back to Marketing Command Center

Channels: bake the Meta 4-step setup doc into the Meta card (Ads-app gotcha + Other/Business → Instagram+FB Login products → App Review Standard Access → then mint token); Meta parked

2a5b5598b90f07c65de6abbfefcb5e981f09de76 · 2026-06-14 17:43:51 -0700 · Steve Abrams

Files touched

Diff

commit 2a5b5598b90f07c65de6abbfefcb5e981f09de76
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Sun Jun 14 17:43:51 2026 -0700

    Channels: bake the Meta 4-step setup doc into the Meta card (Ads-app gotcha + Other/Business → Instagram+FB Login products → App Review Standard Access → then mint token); Meta parked
---
 public/panels/channels.js | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/public/panels/channels.js b/public/panels/channels.js
index 232374b..c10c40d 100644
--- a/public/panels/channels.js
+++ b/public/panels/channels.js
@@ -43,6 +43,22 @@ window.MCC_PANELS['channels'] = {
           pl.connected ? `<span class="pill" style="background:#e3efe0;color:#3a6b3a">✓ ${esc(pl.label)}</span>`
             : (pl.connectUrl ? `<a class="btn gated" style="text-decoration:none" href="${ORIGIN}${esc(pl.connectUrl)}">Connect ${esc(pl.label)} →</a>` : '')
         ).join(' ');
+        // Meta has a known gotcha: Ads-scoped apps can't grant posting permissions.
+        // Bake the exact 4-step fix into the card so it's waiting whenever Steve returns.
+        const metaDoc = p.id === 'meta' ? `
+          <details style="margin-top:10px;background:#fff8ec;border:1px solid #f0e0c0;border-radius:8px;padding:8px 10px">
+            <summary style="cursor:pointer;font-size:12px;font-weight:700;color:#7a5a2a">⚠ Token only offering 1 permission / "Facebook Login unavailable"? Read this first</summary>
+            <div style="font-size:12px;color:#7a5a2a;margin-top:8px;line-height:1.5">
+              The cause is always the same: an <b>Ads-scoped app</b> can't grant posting permissions, so the token comes back useless. Build the app in this exact order <b>before</b> generating any token:
+              <ol style="margin:8px 0 0;padding-left:18px">
+                <li>Create app → choose <b>“Other”</b> → type <b>Business</b> (NOT an Ads use case).</li>
+                <li>Add <b>two</b> products: <b>Instagram</b> <i>and</i> <b>Facebook Login</b>.</li>
+                <li><b>App Review → Permissions and Features</b> → confirm <code>pages_manage_posts</code> + <code>instagram_content_publish</code> show <b>Standard Access</b>.</li>
+                <li><b>Only then</b> generate the token (Graph API Explorer or a Business-Settings System User) — all 6 permissions will finally appear. Paste App ID + Secret above and Connect.</li>
+              </ol>
+              Norma's IG agent is a simulation stub — it has no token to reuse. There is no existing Meta token in the stack; one must be minted via the steps above.
+            </div>
+          </details>` : '';
         return `<div class="card setup-card" style="margin:0">
           <div style="display:flex;align-items:center;gap:8px"><span style="font-size:20px">${p.icon}</span><b>${esc(p.title)}</b></div>
           <div style="margin:6px 0 4px">${statusPills}</div>
@@ -52,6 +68,7 @@ window.MCC_PANELS['channels'] = {
           <div class="ch-sublabel">Permissions / scopes</div>
           <div class="muted" style="font-size:11.5px">${esc(p.permissions)}</div>
           <div class="ch-sublabel">App credentials</div>${fields}
+          ${metaDoc}
           <div class="row" style="margin-top:12px;align-items:center">
             <button class="btn gold" data-save="${esc(p.id)}">Save credentials</button>
             ${connects}

← 744335b MCC: approve + schedule the 8 launch social posts (Bold Blus  ·  back to Marketing Command Center  ·  MCC QA fixes: re-render #3 (Anemone Blush, was off-theme) + 4715bb6 →