0

ファンページタブで実行するフォトコンテストfbアプリに取り組んでいます。他のユーザーが投票できるように、ユーザーは写真を共有できる必要があります。iframeの画像リンクが特定の写真のhttp://example.com/image.php?id=1であると仮定すると、共有を押すと、 を通じてこのリンクが共有されますiframe。ホストアプリ自体につながります。必要なのは、fb アプリのタブ ページの URL 全体を http://example.com/image.php?id=1Iframeで共有することです。それは何らかの方法で可能ですか?手伝ってくれてありがとう。

4

2 に答える 2

2

したがって、キャンバスアプリに焦点を当てた@Lixの回答に「代替」を与えるために、ここではページタブアプリのアナログな方法を示します。

なんらかの理由で、Facebook はページ タブ アプリに対して別のことを行うことにしました。キャンバス アプリとは異なり、GET パラメーターをアプリの facebook.com アドレスに追加してアプリに渡すことはできませんが、使用する必要があります。app_dataそのためのパラメーター。

フォームでアプリを呼び出し/リンクします。parameterhttps://www.facebook.com/YourPage?v=app_1234567890&app_data=fooの値として入力したものは何でも、Facebook POST が initial(!) で iframe に読み込まれることをアプリで確認できます。app_datasigned_request

したがって、を解析してsigned_request(または PHP SDK に任せて)、app_dataそこに値を見つけます。複数の単一の値を渡したい場合は、JSON でエンコードされたデータをそこに置くこともできます。署名されたリクエストから app_data 値を読み取った後、再度デコードする必要があります。

ドキュメントではparameterについて簡単に言及していapp_dataますが、原理自体は非常に単純です。


これらのリンクを共有 する場合、上記の形式でアドレスを使用すると、Facebook は URL からパラメーターを削除し、リンク全体を Facebook ページへの単なるリンクとして扱う傾向があることがわかりました。ページの画像と説明、さらに app_data パラメータはもちろん、ページ タブ アプリも渡しません。

これを回避する最も信頼できる方法は、Facebook のページ タブに直接リンクするのではなく、独自のアプリの URL にリンクすることです。スクレーパーが訪問すると、関連する OG 情報を配信します。実際のユーザーがアクセスすると、ページ タブ アプリにリダイレクトし、app_data上記のパラメーターを介して必要なデータを渡します。リダイレクトは、サーバー側 ( User-Agent ヘッダーを介してサーバー側でスクレイパーを検出する方法に関する情報)、または JavaScript を介してクライアント側 (スクレイパーは「話す」ことはありません) で行うことができます。

于 2013-10-07T10:14:56.237 に答える
1

もちろんそうだ。必要なのは、アプリケーション キャンバス URL から情報を抽出できることだけです。キャンバス URL が次のような場合:

https://apps.facebook.com/ImadBakir

次に、次のように、そこにさらに情報を配置できます。

https://apps.facebook.com/ImadBakir?photo_id=123

ユーザーはそのリンクを共有し、アプリケーションでそのphoto_idパラメーターを解析し、必要な HTML 変更を加えて、ページとアプリケーションの読み込み時に iframe 内に正しい画像を表示できます。

URL パラメーターの解析に関しては、JavaScript で行うことを想定して、次の投稿で詳細を読むことができます:
JavaScript でクエリ文字列値を取得するにはどうすればよいですか?

于 2013-10-07T07:31:35.550 に答える