これは明らかな問題のように思われるかもしれませんが、キャンバスアプリに関するFacebook開発者サイトとFacebook csharp sdkを調べましたが、私の質問に対する答えは見つかりませんでした。
私はfacebook-c#-sdk v5.4xか何かについて、.net3.5をWebフォームを使用して使用しています。
デスクトップ用のキャンバスアプリには、複数のエントリポイントがあります。
https://apps.facebook.com/my_canvas_app/Default.aspx
https://apps.facebook.com/my_canvas_app/Register.aspx?EventID=12345
https://apps.facebook.com/my_canvas_app/SomeOtherPage.aspx
私の最初の質問は、Facebookからの最初のリクエストから、signed_request
(facebook-c#-sdkが処理する)を受け取り、約2時間有効なoauthトークンを持っているということです。このoauthトークンを更新し、oauthリクエスト(グラフのクエリなど)を実行する前に有効であることを確認する正しい方法は何ですか?
現在、すべてのリンク(たとえば、Default.aspxから)はのよう<a href="https://apps.facebook.com/my_canvas_app/SomeOtherPage.aspx" target="_top">Go to Some Other Page</a>
に見えます。これは、Facebookへのラウンドトリップを実行し、新しいsigned_request
、したがって更新されたoauthトークンを取得することになります。
次に、asp.netを介して自分のサイトに通常のフォームのポストバックを実行する場合、アプリケーションで正常に機能するように見えるsigned_request
単純なフォーム上にあることを確認<input type="hidden" name="signed_request" value="<%=Request.Form["signed_request"]%>" />
します。これを省略すると、ポストバックにoauth情報がないため、失敗します。これは、キャンバスアプリでポストバックを実行する正しい方法ですか?csharp-sdkのソースを表示すると、リクエスト間でoauthトークンを保持するためにセッションに何も保存されていないことがわかります。したがって、複数のページ/ポストバックには非表示の入力とtarget ="_top"リンクが必要です。私はこの控除で訂正しますか?
https://apps.facebook.com/my_canvas_app/MobilePage.aspx
第三に、モバイルキャンバスアプリ(iframeなし)を開発するとき、私の最初の仮定が正しければ、私のページ上のすべてのリンクはまだ行く必要がありますか?
誰かがこれらの主題に光を当てることができれば、私は大いに感謝されます。
ありがとう!