1

這可能看起來像一個明顯的問題,但我已經看過Facebook開發人員網站上關於畫布應用程序,並在facebook csharp sdk,並沒有找到我的問題的答案。多頁面的網站結構Facebook的帆布應用程序

我使用的是Facebook-c#-sdk v5.4x或其他關於.net 3.5使用webforms。

桌面的畫布應用程序將有多個入口點。

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需要照顧),我有OAuth令牌,約2小時有效。在嘗試創建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信息,導致事情失敗。這是在canvas應用程序中執行回發的正確方法嗎?從查看csharp-sdk的源代碼可以看出,會話中沒有任何內容存儲在請求之間以保留oauth標記,因此隱藏的輸入和target =「_ top」鏈接對於多個頁面/回發是必需的,上午我在這個演繹中糾正?第三,在開發移動畫布應用(無iframe)時,如果我的第一個假設是正確的,那麼頁面上的所有鏈接仍然必須去https://apps.facebook.com/my_canvas_app/MobilePage.aspx

如果有人可以對這些問題進行一些闡述,我將不勝感激。

謝謝!

回答

0

什麼我做的是在每個頁面的基礎上使用signed_request。桌面環境中的所有鏈接都會通過target="_top"訪問http://apps.facebook.com/myappnamespace/MyPageName.aspx,這樣每次頁面更改都會獲得更新的oauth標記。移動運營方式與signed_request不適用於移動體驗不同。解決方法是使用服務器端身份驗證。我不使用http://apps.facebook.com/myappnamespace作爲移動環境,因爲它不在iframe中。 Mobile像其他任何常規網站一樣運作。

2

現在我所有的鏈接(比如說Default.aspx)看起來都像轉到其他頁面,最終做了一次往返於Facebook的訪問,獲得了一個新的signed_request,因此獲得了更新的oauth標記。

我建議也將JavaScript SDK嵌入到您的頁面中 - 每次調用FB.getLoginStatus時也應該爲您提供有效的訪問令牌。 你可以做的另一件事,是對攻短時訪問令牌你在用戶登錄很長一段時間一個,見https://developers.facebook.com/roadmap/offline-access-removal/

如果您的訪問令牌保存到某種會話,那麼我想你必須通過回傳將它從頁面轉移到頁面,是的。

(也許你應該看看https://developers.facebook.com/docs/authentication/access-token-expiration/爲好。)

+0

我期待着做所有沒有javascript的oauth,如果一切可能的話。如果javascript是必需的,那麼爲什麼要有'signed_request'呢?我的理解是'signed_request'是使用javascript lib的替代方案。 – Matthew

+0

如果您正在進行服務器端身份驗證,那麼訪問令牌應在大約60天內有效,而不僅僅是兩個小時(請參閱:https://developers.facebook.com/roadmap/offline-access-removal/) – CBroe

相關問題