2012-02-20 92 views
4

我試圖從V5.3.2遷移到V6的SDK。我有一個ASP.NET 4.0 Canvas應用程序。我注意到,現在有沒有更多的Facebook.Web.dll中(這是我以前使用),並發現了這個信息:從V5遷移到Facebook C#SDK的V6

> 去除Facebook.Web.dll中和Facebook.Web.Mvc的。 dll 從v6開始,我們貶低Facebook.Web.dll和Facebook.Web.Mvc.dll,並將不再提供它。 ... 從v6開始,您將不得不使用Facebook Javascript SDK獲取訪問令牌並使用安全https連接將其傳遞到服務器,或使用Facebook OAuth登錄對話框。 解碼已簽名的請求(ParseSignedRequest/TryParseSignedRequest)已轉移到FacebookClient。

var fb = new FacebookClient(); 
dynamic signedRequest = fb.ParseSignedRequest("app_secret", Request.Params["signed_request"]); 

< < < < (http://blog.prabir.me/post/Facebook-CSharp-SDK-Glimpse-into-the-Future.aspx) 所以,這一切都很好。以前,我在我的代碼有這背後:

protected void Page_Load(object sender, EventArgs e) 
{ 

    var auth = new CanvasAuthorizer { Permissions = new[] { "user_about_me" } }; 

    if (auth.Authorize()) 
    { 
     ShowFacebookContent(); 
    } 
} 

要改變它,我現在得到的JavaScript SDK成功加載和我的用戶登錄:

<div id="fb-root"></div> 

<script type="text/javascript"> 
     FB.init({ appId: 'xxxxxxx', cookie: true, status: true, oauth: true }); 

     FB.getLoginStatus(function (response) { 
      if (response) { 
       alert(response.authResponse.accessToken); 
      } 
     }); 

</script> 

我測試過這一點,它成功登錄到用戶。但是,如何讓它做回發並調用之前調用的服務器端方法(ShowFacebookContent)?我假設無論我做什麼都必須傳遞accessToken或SignedRequest,以便fb.ParseSignedRequest可以工作,並且在服務器上我們可以生成一個FacebookClient。

我猜測,幾個人會出現類似的情況,試圖從facebook.web.dll遷移,所以任何指導都會非常棒。

回答

1

根據您的需要傳遞signed_request或access_token。

並且不要通過http傳遞access_token。使用安全https連接。

+0

謝謝,但在什麼情況下我通過憑據?我可以設想我使用提交按鈕來設置表單來傳遞這些內容,但是我希望在加載頁面時觸發此代碼。 – BenjiFB 2012-02-20 19:43:55

+0

當頁面加載時,你想要做什麼確切的請求? – prabir 2012-02-20 19:56:28

+0

因此,我們假設最簡單的示例:我想使用圖形API來獲取用戶的名字,並將ASP:Label設置爲該值。當然,我可以做這個客戶端,但假設我想做這個服務器端(我可以做V5),並希望在頁面加載時發生。 – BenjiFB 2012-02-20 20:40:29