1

これは明らかな問題のように思われるかもしれませんが、キャンバスアプリに関する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_requestfacebook-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なし)を開発するとき、私の最初の仮定が正しければ、私のページ上のすべてのリンクはまだ行く必要がありますか?

誰かがこれらの主題に光を当てることができれば、私は大いに感謝されます。

ありがとう!

4

2 に答える 2

2

現在、すべてのリンク(たとえば、Default.aspxから)はGo to Some Other Pageのように見えます。これは、Facebookへのラウンドトリップを実行し、新しいsigned_requestを取得して、更新されたoauthトークンを取得します。

JavaScript SDKをページに埋め込むこともお勧めします。FB.getLoginStatusを呼び出すと、毎回有効なアクセストークンが取得されます。もう1つできることは、ユーザーログイン時に取得した短時間のアクセストークンを長時間のアクセストークンと交換することです。https://developers.facebook.com/roadmap/offline-access-removal/を参照してください。

アクセストークンをある種のセッションに保存しない場合は、ポストバックを介してページ間でトークンを転送する必要があると思います。そうです。

(そして多分あなたはhttps://developers.facebook.com/docs/authentication/access-token-expiration/も見てみるべきです。)

于 2012-05-31T11:58:12.380 に答える
0

私がやっていることは、signed_requestページごとにを使用することです。デスクトップ環境のすべてのリンクはで移動します。このようにhttp://apps.facebook.com/myappnamespace/MyPageName.aspxしてtarget="_top"、ページが変更されるたびに更新されたoauthトークンが取得されます。モバイルエクスペリエンスでは利用できないため、モバイルの動作は異なりsigned_requestます。このための解決策は、代わりにサーバー側の認証を使用することです。http://apps.facebook.com/myappnamespaceiframe内にないため、モバイル環境には使用していません。モバイルは他の通常のウェブサイトと同じように動作します。

于 2012-07-27T14:36:23.823 に答える