私はPHPで最初のFacebookアプリケーションを開発していて、それが見られているFacebook上のページがアプリで検出できるかどうか疑問に思っていました。私はいくつかの異なるページにアプリケーションを表示する予定で、アプリケーションがページごとに異なるものを表示するようにしたいと考えています。このようにして、複数の異なるものの代わりに1つの中央のアプリケーションに対するアクセス許可をユーザーが受け入れる必要があります。Facebookページタブのアプリiframeは、経由して閲覧しているページを検出できますか?
答えて
はい。ページIDがsigned_request
(POST)です。要求がFacebookのプロキシを経由しているため、URL全体を取得できません。
class Facebook {
// Facebook signed request parser
public static function parse($signed)
{
list($encoded, $payload) = explode('.', $signed, 2);
$sig = Facebook::base64_url_decode($encoded);
$data = json_decode(Facebook::base64_url_decode($payload), true);
if(strtoupper($data['algorithm']) !== 'HMAC-SHA256'){
error_log('Unknown algorithm. Expected HMAC-SHA256');
return false;
}
return $data;
}
// Base64 decode for Facebook
private static function base64_url_decode($input)
{
return base64_decode(strtr($input, '-_', '+/'));
}
}
(これは私のクラスのほんの一部である)ここで、あなたがそれを行うことができますどのような方法は、ある後のちょうどページのIDに基づいてコンテンツを提供...
$signed_request = $_POST['signed_request'];
$response = Facebook::parse($signed_request);
$page_id = $response['page']['id'];
あなたが言っているように、ユーザーごとに一度だけ許可する必要があり、すべてのページ(私は何百もある)で使用できるようになります。これは、ユーザーがアプリケーションに「接続」しているときにsigned_requestの出力です。
Array
(
[algorithm] => HMAC-SHA256
[expires] => 0
[issued_at] => 1311062412
[oauth_token] =>
[page] => Array
(
[id] => 149715315100385
[liked] => 1
[admin] => 1
)
[user] => Array
(
[country] => ba
[locale] => en_US
[age] => Array
(
[min] => 21
)
)
[user_id] => 1368368917
)
また、あなたは(それらのためにあなたが権限を持っている)ユーザー情報にアクセスするためのトークンを取得します、PAGE-> ID、USER_IDを見ることができます。
詳細な回答ありがとう! – oliverwhite
@oliverwhite、問題ありません、喜んで助けてください、私は先月Facebookのことをやってきました。だから、まだ新鮮です:) –
最初のアプリを作成するときに、この場所をデベロッパーアプリケーションで設定します。 facebook.com/developersにアクセスして新しいアプリを作成すると、キャンバスアプリケーションの場所を設定できるようになり、app.facebook.com/YOUR_APP_NAMEにロードされます。
Mr Partner Engineer、あなたは完全に疑問を誤解していると思います。 –
あなたは、「私はいくつかの異なるページにアプリケーションを表示し、各ページごとに異なるものを表示させたいと思っています。アプリは1つの場所、apps.facebook.com/YOUR_APP_CANVAS_NAMEしか表示されません。そこから、あなたが何でも欲しいものを表示することができます。異なる機能を作っているのであれば、一般に、それぞれのアプリケーションごとに別々のアプリケーションを作成したいと思うでしょう。しかし、PHPで$ _SERVER ['HTTP_REFERER']を使って参照ページのアドレスを見つけることができます。 – DSchultz
リクエストがトラフプロキシに転送されているため、ユーザーがページタブ(?sk = app_ *)でアプリケーションにアクセスしているときは機能しません。 Refererはapps.facebook.comのアプリにアクセスすると機能しますが、ページIDに応じてコンテンツを提供する必要があるため、それを行うことに意味はありません。 –
- 1. iframeで閲覧しているページを知る
- 2. Facebookページタブを開くときにFacebookがFacebookにログインしているかどうかを検出
- 3. ChromeのiFrame経由でアプリにログインすることはできませんが、直接閲覧することはできません
- 4. ページ閲覧Wagtail CMSコレクションの閲覧
- 5. iframeがFacebookのページタブに読み込まれました:signed_requestが 'ページ'ではない 'profile_id'を返しました
- 6. 検索エンジンを無視してページの閲覧回数をカウントしていますか?
- 7. Apache2で閲覧しているサブフォルダディレクトリ
- 8. Android上のUnity Script経由でFacebookアプリを開きますか?
- 9. モバイルデバイスでFacebookアプリをページタブとして表示することはできますか?
- 10. ディレクトリから写真のコレクションを閲覧していますか?
- 11. API経由でFacebookページを利用できますか?
- 12. オフラインWebページ閲覧
- 13. MVCで閲覧しているページのページURL(アクションURLなし)を取得します
- 14. Facebook:ページタブの新しいIFrameキャンバスの幅が520ピクセル未満ですか?
- 15. Safariのiframe経由のフラッシュが破裂しています
- 16. ユーザーが閲覧または接続しているウェブサイトを検出する方法
- 17. 閲覧できないURL?
- 18. simplexml_load_file安全に閲覧しているときの問題
- 19. ページ閲覧時にフラッシュアニメーションを保存しますか?
- 20. puppeteer:サイト/アプリがpupeteerで閲覧されているかどうかを確認できますか?
- 21. アプリがFacebook広告経由でインストールされているかどうかを判断できますか?
- 22. ページタブとしてのFacebookアプリケーション - ページタブではなく実際のウェブサイトへのリダイレクト
- 23. Safariで閲覧していないコンテンツがあるのはなぜですか?
- 24. FaceBookはHTTPSでPOSTされたiframeアプリケーションをPOST経由でロードしています
- 25. SignalR OnReconnect新しいページが閲覧されました
- 26. Facebookのiframeなしでページタブを作成するにはどうすればいいですか?
- 27. Cドライブを使用してGoogleドライブのファイルを閲覧できますか?
- 28. 非常にページを閲覧しているときにリスト要素を強調表示します
- 29. Webページの閲覧に関するAnalytics
- 30. *はC++関数名ですか? Genodeソースコードのドキュメントを閲覧している間
[Facebookブックアプリのタブページごとに固有のIDを取得する](http://stackoverflow.com/questions/5302471/getting-a-unique-id-per-tab-page-for-a- facebook-app) – ifaour