この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:4
ページ更新者:atom
更新日時:2026-06-11 07:07:02

タイトル: Facebook API
SEOタイトル: Facebook (Meta) Graph API 完全ガイド|App 作成・Access Token・Login・Instagram 連携

この記事の要点
  • Facebook API は現在 Meta Graph API として提供。developers.facebook.com で App を作成し、App ID と App Secret を取得するのが出発点
  • API のアクセスは Access Token 経由。User トークン / Page トークン / App トークン / システムユーザートークンの 4 種があり、用途で使い分け
  • エンドポイントは /me (自分) / /me/posts / /me/feed / //feed など。バージョン (例 v18.0) を URL に含める
  • 本番公開には App Review 通過が必須。email 以外の高度な権限 (pages_read_engagement、instagram_basic) は審査対象
  • 関連 API: Facebook LoginInstagram Graph APIWhatsApp Business APIMarketing API など、Meta 製品はすべて Graph API ファミリーで統合

Meta Graph API とは

Facebook (Meta) が提供する HTTP ベースの統合 API です。Facebook 投稿、Page 管理、Instagram 投稿、広告管理、WhatsApp メッセージなど Meta 全製品が graph.facebook.com 1 つのドメインで操作できます。

登録手順

STEP 1: 開発者アカウント

  1. developers.facebook.com に Facebook アカウントでログイン
  2. 右上 Get Started → 開発者として登録 (電話番号認証)
  3. My AppsCreate App

STEP 2: App 作成

用途に応じて App タイプを選択:

App タイプ用途
Consumer一般ユーザー向け Facebook Login など
BusinessPage / Instagram Business / WhatsApp Business / 広告管理
Gamingゲーム連携 / Friends API
None (Other)選択肢を明示しない

STEP 3: App ID と App Secret を取得

作成後の Dashboard で:

  • App ID: 公開可能な識別子
  • App Secret: 秘密の鍵 (Server 側のみで保持、フロントに出さない)
App ID:      1234567890123456
App Secret:  abcdef1234567890abcdef1234567890

# .env で管理
FB_APP_ID=1234567890123456
FB_APP_SECRET=abcdef1234567890abcdef1234567890

Access Token の 4 種

種類取得方法主な用途有効期限
User TokenFacebook Login で取得個人プロフィール操作1〜2 時間 → 長期 60 日に変換可
Page TokenUser Token から /me/accounts で取得Page 投稿・管理長期 Page Token は無期限
App TokenApp ID + App Secretサーバ間処理 / Webhook 検証無期限
System User TokenBusiness Manager で発行大規模業務システム無期限

App Token の取得

curl -G "https://graph.facebook.com/oauth/access_token" \
  --data-urlencode "client_id=YOUR_APP_ID" \
  --data-urlencode "client_secret=YOUR_APP_SECRET" \
  --data-urlencode "grant_type=client_credentials"

# レスポンス
# {"access_token":"1234567890123456|abc...","token_type":"bearer"}

主要エンドポイント (v18.0 ベース)

エンドポイント用途
GET /v18.0/me自分の基本情報
GET /v18.0/me/accounts管理 Page 一覧 + Page Token
GET /v18.0/me/posts自分の投稿一覧
GET /v18.0/me/feed自分のフィード (タイムライン)
POST /v18.0//feedPage に投稿
GET /v18.0//insightsPage インサイト (リーチ・エンゲージメント)
GET /v18.0/?fields=id,name,emailfields パラメータで取得項目絞り込み

cURL での実行例

# 自分の情報を取得
curl -G "https://graph.facebook.com/v18.0/me" \
  --data-urlencode "fields=id,name,email" \
  --data-urlencode "access_token=USER_TOKEN"

# Page にテキスト投稿
curl -X POST "https://graph.facebook.com/v18.0/PAGE_ID/feed" \
  --data-urlencode "message=Hello from API" \
  --data-urlencode "access_token=PAGE_TOKEN"

# Page に画像付き投稿
curl -X POST "https://graph.facebook.com/v18.0/PAGE_ID/photos" \
  --data-urlencode "url=https://example.com/photo.jpg" \
  --data-urlencode "caption=キャプション" \
  --data-urlencode "access_token=PAGE_TOKEN"

Facebook Login (OAuth 2.0)

「Facebook でログイン」ボタンを自社サイトに付けるための仕組み。ユーザーから User Access Token を取得します。

1. ブラウザを認可 URL へ
   https://www.facebook.com/v18.0/dialog/oauth
     ?client_id=YOUR_APP_ID
     &redirect_uri=https://myapp/auth/fb/callback
     &state=RANDOM_STATE
     &scope=email,public_profile

2. ユーザーが同意 → リダイレクト
   https://myapp/auth/fb/callback?code=AQB...&state=...

3. サーバから code を Access Token に交換
   GET https://graph.facebook.com/v18.0/oauth/access_token
     ?client_id=YOUR_APP_ID
     &client_secret=YOUR_APP_SECRET
     &redirect_uri=https://myapp/auth/fb/callback
     &code=AQB...

4. レスポンス: { "access_token": "EAAB...", "expires_in": 5184000 }

5. ユーザー情報取得
   GET https://graph.facebook.com/v18.0/me?fields=id,name,email
     &access_token=EAAB...

JS SDK でのフロント実装






権限とスコープ

スコープ説明レビュー必要
public_profile名前・プロフィール画像不要
emailメールアドレス不要
pages_show_list管理 Page リスト必要 (Standard Access)
pages_read_engagementPage インサイト必要 + 認証ビジネス
pages_manage_postsPage 投稿管理必要
instagram_basicInstagram プロフィール取得必要
instagram_content_publishInstagram 投稿必要
ads_management広告管理必要
whatsapp_business_messagingWhatsApp 送信必要 + ビジネス認証

App Review (本番公開)

開発モードではApp 管理者・テスター・開発者のみ利用可能。一般ユーザーに提供するには App Review が必要です。

  • 権限ごとに「なぜ必要か」のユースケース動画と説明を提出
  • ビジネス認証 (Business Verification) は法人ドキュメント提出
  • Privacy Policy URL、利用規約 URL は必須
  • 審査期間: 数日〜数週間

Webhooks

Page への新着投稿・コメント、ユーザーのプロフィール変更などをリアルタイムで受信できます。

// app/Http/Controllers/FbWebhookController.php (Laravel 例)
public function verify(Request $r)
{
    $mode = $r->query('hub_mode');
    $challenge = $r->query('hub_challenge');
    $token = $r->query('hub_verify_token');

    if ($mode === 'subscribe' && $token === config('services.fb.verify_token')) {
        return response($challenge, 200);
    }
    abort(403);
}

public function receive(Request $r)
{
    // X-Hub-Signature-256 で App Secret を使って HMAC 検証
    $signature = $r->header('X-Hub-Signature-256');
    $expected = 'sha256=' . hash_hmac('sha256', $r->getContent(), config('services.fb.app_secret'));
    if (!hash_equals($expected, $signature)) abort(401);

    // payload 処理
    foreach ($r->input('entry', []) as $entry) {
        foreach ($entry['changes'] ?? [] as $change) {
            // posts / comments / mentions など
        }
    }
    return response('OK', 200);
}

関連 API ファミリー

API用途
Instagram Graph APIInstagram Business / Creator アカウント投稿、インサイト
Marketing API広告キャンペーン作成・最適化
WhatsApp Business APIWhatsApp での顧客メッセージ送受信
Threads APIThreads 投稿 (2024 年新登場)
Conversions APIサーバサイド広告計測
Messenger PlatformMessenger ボット

レート制限とエラー

# App レベル
- 1 時間あたり 200 calls × (アクティブユーザー数)

# レスポンスヘッダで残量確認
X-App-Usage:     {"call_count":12,"total_cputime":1,"total_time":1}
X-Page-Usage:    Page API の使用率
X-Ad-Account-Usage: 広告 API の使用率

# よくあるエラー
{
  "error": {
    "message": "...",
    "type": "OAuthException",
    "code": 190,           -- 190 = トークン期限切れ
    "fbtrace_id": "AbCdEf"
  }
}
エラーコード意味対処
190トークン期限切れ / 無効再ログイン / 長期トークン化
200権限不足必要スコープ追加 + App Review
4 / 17 / 32 / 613レート制限指数バックオフ
368コンテンツが Meta ポリシーに抵触投稿内容見直し

FAQ

Q: 旧 Facebook SDK で書いた古いコードがエラーになる
A: Graph API は2 年程度で旧バージョン廃止。URL の v8.0 等を最新 (v18.0 など) に書き換え、レスポンス構造の差分を吸収してください。

Q: 個人プロフィールに自動投稿したい
A: 個人タイムラインへの API 投稿は廃止されています (publish_actions 権限終了)。Page か Instagram Business 経由のみ可能です。

Q: Instagram の DM を API で送りたい
A: Instagram Messaging API (Messenger Platform 経由) で可能ですが、ビジネス認証 + ユーザーが先にメッセージを送ってきた 24 時間以内、などの制約があります。

Q: 開発モードのままだとどこまでテストできる?
A: App ロール (Admin / Developer / Tester) に追加した Facebook アカウントは全機能をテスト可能。一般ユーザーへの公開には App Review 必須。

Q: PHP の SDK は?
A: facebook/graph-sdk は古く長らくメンテ停止中。現在は cURL / Guzzle で直接 HTTP を叩くスタイルが推奨されます。