IG Harnessはじめに·

プライバシーポリシー・利用規約 URL セットアップ(IG Harness セットアップ編 #2)

Shudesuのプロフィール画像

Shudesu

Author

プライバシーポリシー・利用規約 URL セットアップ(IG Harness セットアップ編 #2)

Meta アプリを Live にするのに必須な「プライバシーポリシー URL」と「利用規約 URL」のセットアップ。ここで1時間溶かした経験があるので、最短パスと踏んだ罠を全部書く。

なぜ両方必要か

Meta は Live モードのアプリには必ず以下を要求する:

  • プライバシーポリシー URL
  • 利用規約 URL
  • (任意だが推奨)データ削除コールバック URL

未設定だと Live 切り替え時に「プライバシーポリシーの URL が無効です」エラー。両方とも HTTPS 必須、Meta クローラーがアクセスして 200 を返すことが条件。

最短パス: Cloudflare Workers に2ページ追加

既に IG Harness Worker があれば、/privacy/terms(または /privacy-policy)のハンドラを追加するだけ。

Hono での実装例

app.get('/privacy-policy', (c) => {
  return c.html(`<!DOCTYPE html>
<html lang="ja">
<head><meta charset="UTF-8"><title>プライバシーポリシー</title></head>
<body>
<h1>プライバシーポリシー</h1>
<p>本サービスは Instagram のメッセージ・コメント自動応答のために以下のデータを収集します:</p>
<ul>
  <li>Instagram-scoped User ID (IGSID)</li>
  <li>ユーザー名(公開情報)</li>
  <li>メッセージ・コメントのテキスト</li>
</ul>
<p>収集データは自動応答のためにのみ使用し、第三者に提供しません。</p>
<p>削除要求: <a href="/data-deletion">こちら</a></p>
<p>最終更新: 2026-04-16</p>
</body></html>`);
});

app.get('/terms', (c) => {
  return c.html(`<!DOCTYPE html>
<html lang="ja">
<head><meta charset="UTF-8"><title>利用規約</title></head>
<body>
<h1>利用規約</h1>
<p>本サービスの利用により、ユーザーは以下に同意したものとみなします:</p>
<ol>
  <li>自動応答メッセージを受信すること</li>
  <li>メッセージ履歴が保存されること</li>
</ol>
<p>最終更新: 2026-04-16</p>
</body></html>`);
});

app.get('/data-deletion', (c) => {
  return c.html('<h1>データ削除リクエスト</h1><p>削除希望はお問い合わせください。</p>');
});

デプロイしてから Meta Dashboard に URL を入力する。

踏んだ罠 #1: trailing slash の有無

実際のセットアップ履歴(Meta のアクティビティログから抜粋):

プライバシーポリシーURLが次に変更されました:
  https://<old-worker-name>.workers.dev/privacy
→ https://<old-worker-name>.workers.dev/privacy/
→ https://<old-worker-name>.workers.dev/privacy-policy
→ https://<old-worker-name>.workers.dev/privacy/

trailing slash ありで通る時とない時がある。原因は Meta のクローラーが HTTP 3xx リダイレクト を追いきれないことがあるため。

対策: Worker のハンドラで /privacy/privacy/ 両方に同じコンテンツを返す。

app.get('/privacy', handlePrivacy);
app.get('/privacy/', handlePrivacy);

または、Next.js / 他のフレームワークで trailingSlash 設定を明示する。

踏んだ罠 #2: プライバシー URL と利用規約 URL に同じ値を入れる

「とりあえず全部 /privacy でいいや」と両方に同じ URL を入れると、Meta が「プライバシーポリシーと利用規約は別の URL であるべき」と警告。Live 切り替えが拒否されることがある。

対策: 必ず別の URL にする。最低でも /privacy/terms

踏んだ罠 #3: 404 じゃなくて 5xx を返してしまう

Worker のハンドラが未 deploy のまま URL 入力すると、Worker は 404 を返す(または未定義パスに対する default レスポンス)。これはまだマシで、Worker のクラッシュで 500 を返すと Meta は認証を再試行してくれないことがある

対策: URL 入力前に自分で curl -I https://...workers.dev/privacy で 200 が返ることを確認する。

踏んだ罠 #4: HTTPS 必須

http:// で始まる URL を入力すると即「URL が無効」。Worker は .workers.dev サブドメインで自動的に HTTPS なので問題ないが、独自ドメインで運用する場合は SSL 証明書が自動発行されているか確認。Cloudflare で管理する独自ドメインなら自動。

踏んだ罠 #5: Meta 側の DNS/クローラーキャッシュで数分遅れる

URL 変更直後に「保存」を押すと「URL が無効」エラー → 5分後に同じ URL で再保存したら通る、というパターンがある。Meta のクローラーが古い DNS レコード or 古いコンテンツをキャッシュしているっぽい。

対策: 「URL が無効」エラーが出ても慌てず、Worker 側を curl で確認した上で数分空けてから再保存

データ削除コールバック URL

「データ削除コールバック URL」は任意だが、App Review に進む可能性があるなら設定推奨:

https://your-worker.workers.dev/data-deletion

このエンドポイントは、ユーザーが Facebook から「このアプリとの連携を削除」した時に Meta から POST される。処理は「受信した user_id のデータを自サービスから削除」すればOK。

チェックリスト

  • Worker に /privacy ハンドラ実装 (trailing slash 両対応)
  • Worker に /terms ハンドラ実装
  • Worker に /data-deletion ハンドラ実装(任意)
  • curl -I https://<worker-url>/privacy で 200 を確認
  • Meta Dashboard でプライバシー URL と利用規約 URL を別の値で入力
  • 保存が失敗したら数分待ってリトライ

次は Instagram アカウント紐付け・アクセストークン取得編 へ。

#setup#privacy-policy#terms#meta#cloudflare-workers
この記事が役に立ったら投票してください

コメント (0)

コメントするにはログインしてください。

プライバシーポリシー・利用規約 URL セットアップ(IG Harness セットアップ編 #2) — Harness Wiki