カスタム Open Graph アクションとオブジェクトを使用して最初の Facebook アプリを開発しています。コードを変更するたびにデプロイする必要がないようにしています (この場合は、自動的にセットアップされた heroku アカウントに)。
この問題は、最初のカスタム アクションの発行をテストするためのセットアップ中に発生しました。私が理解しているように、(OGメタタグをスクレイピングするために)パブリックにアクセスできる必要がある「オブジェクト」ページを除いて、Facebookアプリの開発バージョンに関してすべてをセットアップしようとしていました。
カスタム オブジェクトのテスト ページを作成し、自動生成された OG メタ タグのセットをそこにコピーしました (app_id の dev-version を引用しますが、og のアプリの prod-version のパブリック URL を使用します。 url) 次に、そのテスト ページで facebook の「lint」ツールを使用しましたが、当然のことながら、関連するアプリ (私の facebook アプリの開発バージョン) に対してパブリック ドメインが無効であると不平を言いました。
Object Base Domain Not Allowed: Object at URL
'http://foo.herokuapp.com/testEventPage.php' of type 'foo:product' is
invalid because the domain 'foo.herokuapp.com' is not allowed
for the specified application id '(the app_id)'.
次に、Tunnlr を使用して公開サイトからローカル環境にポート転送する方法を学び、その設定に進みました。
次のように、仮想ホスト構成で MAMP を使用しています。
<VirtualHost *:8888>
DocumentRoot "(the relevant docroot)"
ServerName foo.local
SetEnv FACEBOOK_APP_ID (my dev FB app-id)
SetEnv FACEBOOK_SECRET (my dev FB secret)
</VirtualHost>
そして、ポート8888を指すcmdlnでtunnlrを使用しています。
Tunnlr が提供する公開 URL を使用してローカル ページにアクセスできますが、Facebook のサンプル PHP コードに付属のページで [ログイン] ボタンを使用しようとすると、ログイン ダイアログが表示されますが、ローカルで直接アクセスすると問題なく動作しますが、すぐに消えます。
これは Cookie に関連している可能性がありますか? ポートフォワーディングとクッキーと何か関係がありますか?
Facebook アプリ、特に Open Graph のカスタム アクションとオブジェクトを含むアプリを開発するためのより良い方法はありますか?
編集: 医者が言ったように、腕をそのように動かすと痛い場合は、そのように腕を動かさないでください! つまり、Facebook-Canvas URL を介して Tunnlr-URL にアクセスすると、埋め込みページの現在のログイン情報が自分のページに POST されます。また、ユーザー (オプションでテスト ユーザー) として、コード例のログイン ボタンを使用しないでください。代わりに、埋め込みページのログイン機能を使用してください。だから、私は自分の質問に答えました。