まず、この質問の長さ、およびFacebook API(世界で最も一貫性のないAPIの1つと思われる...)について質問したことをお詫びします。
状況:Facebook製品の「コミュニティ」を作成しています。クライアント向けのタイプのページで、標準のFacebookタブがあり、そのうちの1つにFlashゲームが組み込まれています。このゲームの終わりに、ウォールポストを介してユーザーの最終スコアを共有できるようにし、また、スコアに挑戦するために友達を招待できるようにしたいと思います。
まず、クライアントはゲームがページ内のタブに表示されることを主張しているため、これをすべてアプリケーション(たとえばapps.facebook.com
)に移動することは残念ながらオプションではありません。静的FMBLの代わりにタブにアプリケーションを埋め込むことができることは承知していますが、これを試しましたが、結果は基本的に同じか失敗します(タブはレンダリングできるものに厳しい制限を課し、FBMLの使用を強制し、FB:Iframe
スターター用のタグ)。
現在、このゲームを静的なFBMLタブに埋め込み、fb:swf
タグとFBJSブリッジを使用して、タブでの簡単な操作(新しいウィンドウへの移動など)を可能にしています。また、FBJS埋め込みアプローチを試し、ゲームをアプリケーションにして、それをページのタブとして追加しました。いずれの場合も、タブ環境では表示ユーザーのUIDを取得する方法はないようです(最初にページを表示するにはログインする必要がありますが)。ゲーム自体はFlashActionScript3であり、Facebook ActionScript3APIを使用するオプションがあります。このアプローチを使用して、私がこれまでに思いついた最良のプロセスを以下に概説します。
0)スコアの共有などを目的とした別のアプリケーションを作成します。
1)ユーザーは、TABページでゲームの終了時に[スコアを共有]をクリックします。
2)SWFは、新しいタブを開いて、標準のFacebookの「アプリケーションへのログイン」要求を実行します。
3)ユーザーはこのアクションを確認し、新しいウィンドウを閉じます。
4)ユーザーがFlashゲーム内をもう一度クリックして、ログインしたことを確認します。
5)SWFがを実行し、facbook.verifySession()
さらに別のウィンドウを開いて、ユーザーのウォールに投稿する許可を要求します。
6)ユーザーはこれを確認し、もう一度ゲームに戻ります。
7)SWFは「FacebookEvent.PERMISSIONS_CHANGED」をリッスンし、これが確認されるとウォールに投稿します。
ユーザーがタブをロードするときにアプリケーションを追加したかどうかを確認する方法がないため、ゲームの結果を投稿するたびにこのプロセスに従う必要があります。これは恐ろしいことです。主な問題は、FacebookタブにあるRIAapps.facebook.com
は、リクエストヘッダー内で必要なすべての情報を取得するRIAとは対照的に、そのタブのOAuthトークン内で有用な情報を受け取らないことです。
簡単に言えば、FMBL、FBJS、ActionScript 3、ASP、またはそれらの任意の組み合わせを使用しているかどうかにかかわらず、Facebookの[製品ページ]タブ内からFacebookのウォール投稿を作成するための最も簡単で簡単な方法が必要です。
私はこれを見ました:https ://stackoverflow.com/questions/3674923/facebook-share-or-publish-dialogue-from-page-tab-closedこれは確かに私が尋ねているのと同じ質問ですが、答えは不明確で、それが私の問題を解決するようには思えません。