帳號管理

說明如何透過控制台與 API 管理已連結的社群帳號。

概覽

帳號管理相關端點可用於:

注意:此區端點需要 控制台 Session 驗證(Cookie),不接受 API Key。

列出帳號

取得當前使用者所連結的所有社群帳號。

Endpoint

GET /api/accounts

驗證方式

需登入控制台並攜帶 Session Cookie。

Response

{
  "accounts": [
    {
      "account_id": "uuid-string",
      "social_channel_type": "facebook",
      "page_name": "My Facebook Page",
      "page_id": "123456789",
      "is_valid": true,
      "expires_at": null,
      "data_access_expires_at": "2026-01-05T10:30:00Z",
      "created_at": "2025-01-01T10:00:00Z",
      "updated_at": "2025-01-20T15:30:00Z"
    },
    {
      "account_id": "uuid-string",
      "social_channel_type": "instagram",
      "ig_username": "myusername",
      "ig_account_id": "987654321",
      "account_type": "BUSINESS",
      "is_valid": true,
      "expires_at": "2025-03-20T10:30:00Z",
      "created_at": "2025-01-15T12:00:00Z",
      "updated_at": "2025-01-15T12:00:00Z"
    },
    {
      "account_id": "uuid-string",
      "social_channel_type": "threads",
      "threads_username": "myusername",
      "threads_id": "123456789",
      "threads_profile_picture": "https://...",
      "is_valid": true,
      "expires_at": "2025-03-15T10:30:00Z",
      "created_at": "2025-01-10T14:00:00Z",
      "updated_at": "2025-01-10T14:00:00Z"
    }
  ]
}

欄位說明

共同欄位

Facebook 專屬

Instagram 專屬

Threads 專屬

解除連結帳號

將帳號標記為停用(資料庫中設定 disabled: true)。

Endpoint

DELETE /api/accounts/{account_id}

驗證方式

需控制台 Session(JWT)。

參數

Request 範例

DELETE /api/accounts/a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6 HTTP/1.1
Host: boring.aiagent-me.com
Cookie: session=...

成功回應

{
  "success": true,
  "message": "Account disconnected successfully"
}

驗證權杖

確認帳號權杖是否仍有效,以及到期時間。

Endpoint

POST /api/token/info

驗證方式

需控制台 Session。

Request Body

{
  "account_id": "uuid-string"
}

Response

{
  "success": true,
  "data": {
    "is_valid": true,
    "expires_at": "2025-03-20T10:30:00Z",
    "days_until_expiry": 45,
    "platform": "instagram",
    "account_name": "myusername"
  }
}

使用情境

帳號 ID

account_id 是發佈貼文時最關鍵的識別碼。

取得帳號 ID

透過控制台

  1. 登入 Boring 控制台
  2. 檢視「Connected Accounts」
  3. 點擊帳號旁的 「Copy ID」
  4. 保存 ID 以供 API 使用

透過 API

const response = await fetch("https://boring.aiagent-me.com/api/accounts", {
  credentials: "include"
});
const data = await response.json();
const accountIds = data.accounts.map(acc => ({
  id: acc.account_id,
  platform: acc.social_channel_type,
  name: acc.page_name || acc.ig_username || acc.threads_username
}));

保存帳號 ID

建議做法:

FACEBOOK_MAIN_PAGE_ID=a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6
INSTAGRAM_BUSINESS_ID=b2c3d4e5-f6g7-h8i9-j0k1-l2m3n4o5p6q7
THREADS_PERSONAL_ID=c3d4e5f6-g7h8-i9j0-k1l2-m3n4o5p6q7r8

權杖有效期

各平台有效期不同:

平台 有效期 自動刷新 建議動作
Facebook 永不過期 N/A 每 90 天重新授權一次資料存取權
Instagram 60 天 到期前重新連結
Threads 60 天 會(到期前 5 天) 通常無需動作

處理到期

def check_token_expiration(account_id):
    response = requests.post(
        "https://boring.aiagent-me.com/api/token/info",
        json={"account_id": account_id},
        cookies=session_cookies
    )

    data = response.json()
    if data["success"]:
        days_left = data["data"]["days_until_expiry"]
        if days_left and days_left < 7:
            notify_admin(f"Token expiring in {days_left} days!")

建議每日檢查,低於 7 天即通知使用者重新授權。

帳號數量限制

平台限制

Boring 限制

目前對使用者連結帳號數量無限制。

多帳號管理

分組

ACCOUNTS = {
    "production": {
        "facebook": "prod-fb-account-id",
        "instagram": "prod-ig-account-id",
        "threads": "prod-threads-account-id"
    },
    "testing": {
        "facebook": "test-fb-account-id",
        "instagram": "test-ig-account-id",
        "threads": "test-threads-account-id"
    },
    "clients": {
        "client_a_facebook": "client-a-fb-id",
        "client_b_instagram": "client-b-ig-id"
    }
}

批次操作

def check_all_accounts():
    response = requests.get(
        "https://boring.aiagent-me.com/api/accounts",
        cookies=session_cookies
    )

    accounts = response.json()["accounts"]

    for account in accounts:
        name = account.get("page_name") or account.get("ig_username") or account.get("threads_username")
        print(f"{account['social_channel_type']}: {name} - Valid: {account['is_valid']}")

疑難排解

查無帳號

{
  "success": false,
  "error": "AccountNotFound"
}

可能原因

解法

權杖失效

發佈時可能出現:

{
  "success": false,
  "error": "InvalidToken",
  "message": "Token expired or revoked"
}

解法

  1. 前往控制台
  2. 解除連結該帳號
  3. 重新連結並授權
  4. 更新本地儲存的帳號 ID

權限變更

若在 Facebook / Instagram / Threads 介面撤銷了 Boring 的權限,權杖會立即失效,需重新連結。

最佳實務

  1. 安全儲存帳號 ID:使用環境變數或秘密管理
  2. 監控到期日:設定提醒或自動化通知
  3. 清楚標記帳號:在控制台使用具描述性的名稱
  4. 維持測試帳號:正式與測試環境分開管理
  5. 紀錄對照表:將帳號 ID 與實際用途記錄下來
  6. 定期稽核:每月檢視帳號清單
  7. 完成任務即撤銷:不再需要時請解除連結

安全性

存取控制

撤銷存取

若要完全撤銷:

  1. 在 Boring 控制台解除連結帳號
  2. 在對應平台刪除 Boring 應用程式
  3. 刪除不再使用的 API Key

資料保留

解除連結帳號後:

下一步