ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
Meta Graph API とは
Facebook (Meta) が提供する HTTP ベースの統合 API です。Facebook 投稿、Page 管理、Instagram 投稿、広告管理、WhatsApp メッセージなど Meta 全製品が graph.facebook.com 1 つのドメインで操作できます。
登録手順
STEP 1: 開発者アカウント
- developers.facebook.com に Facebook アカウントでログイン
- 右上 Get Started → 開発者として登録 (電話番号認証)
- My Apps → Create App
STEP 2: App 作成
用途に応じて App タイプを選択:
| App タイプ | 用途 |
|---|---|
| Consumer | 一般ユーザー向け Facebook Login など |
| Business | Page / 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 Token | Facebook Login で取得 | 個人プロフィール操作 | 1〜2 時間 → 長期 60 日に変換可 |
| Page Token | User Token から /me/accounts で取得 | Page 投稿・管理 | 長期 Page Token は無期限 |
| App Token | App ID + App Secret | サーバ間処理 / Webhook 検証 | 無期限 |
| System User Token | Business 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/<page-id>/feed | Page に投稿 |
GET /v18.0/<page-id>/insights | Page インサイト (リーチ・エンゲージメント) |
GET /v18.0/<user-id>?fields=id,name,email | fields パラメータで取得項目絞り込み |
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 でのフロント実装
<!-- Facebook SDK 読み込み -->
<script async defer crossorigin="anonymous"
src="https://connect.facebook.net/ja_JP/sdk.js"></script>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : 'YOUR_APP_ID',
cookie : true,
xfbml : true,
version : 'v18.0'
});
};
function fbLogin() {
FB.login(function(response) {
if (response.authResponse) {
FB.api('/me', {fields: 'id,name,email'}, function(user) {
console.log(user);
});
}
}, {scope: 'email,public_profile'});
}
</script>
<button onclick="fbLogin()">Facebook でログイン</button>
権限とスコープ
| スコープ | 説明 | レビュー必要 |
|---|---|---|
public_profile | 名前・プロフィール画像 | 不要 |
email | メールアドレス | 不要 |
pages_show_list | 管理 Page リスト | 必要 (Standard Access) |
pages_read_engagement | Page インサイト | 必要 + 認証ビジネス |
pages_manage_posts | Page 投稿管理 | 必要 |
instagram_basic | Instagram プロフィール取得 | 必要 |
instagram_content_publish | Instagram 投稿 | 必要 |
ads_management | 広告管理 | 必要 |
whatsapp_business_messaging | WhatsApp 送信 | 必要 + ビジネス認証 |
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 API | Instagram Business / Creator アカウント投稿、インサイト |
| Marketing API | 広告キャンペーン作成・最適化 |
| WhatsApp Business API | WhatsApp での顧客メッセージ送受信 |
| Threads API | Threads 投稿 (2024 年新登場) |
| Conversions API | サーバサイド広告計測 |
| Messenger Platform | Messenger ボット |
レート制限とエラー
# 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 を叩くスタイルが推奨されます。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?