2011-03-29 49 views
0

我試圖做一個jQuery AJAX調用我MVC控制器在我Facebook C# SDK畫布應用的東西,如:如何做到與Facebook C#SDK和ASP.NET MVC的jQuery AJAX請求

$('#btnGetInfo').click(function() { 
    $.getJSON("/Home/GetInfo", null, 
    function (result) { 

    }); 
    return false; 
}); 

控制器:

public ActionResult GetInfo() 
{ 
    // do some Facebook call 
    var fb = new FacebookClient(); 
    dynamic albums = fb.Get(string.Format("/{0}/photos", friendID)); 
} 

然後我得到(OAuthException) An access token is required to request this resource,我想這或多或少是預期的。所以我嘗試裝飾方法:

[CanvasAuthorize(Permissions = "user_about_me,user_photos,.....)] 
public ActionResult GetInfo() 
{ 
    ... 
} 

但是,然後該方法永遠不會從頁面調用。

使用CodePlex的示例項目,將代碼放在Index()家庭控制器中,因此它不是配置問題,不在應用程序中,也不在Facebook設置中。 我敢肯定,這與通過郵寄回持續認證信息有關。也許CanvasAuthorizer類應該涉及某種方式,也許signed_request事情?我是新來的FB編程並有一個很難把拼在一起......

更新:如果我打電話使用標準

<%: Html.ActionLink("DoThis", "GetInfo", "Home")%> 

叫我的方法,該方法正確執行(與signed_request ),所以現在的問題是; 我怎樣才能做到我的ASP.NET MVC控制器的jQuery調用?

回答

1

訣竅是post the signed_request data在Ajax調用(感謝ntotten):

$.getJSON('/Home/GetInfo', { "signed_request": '<%=Request.Params["signed_request"] %>' }, 
      function (result) { 
       alert("Done"); 
      }); 
0

你在你的web.config中設置了Facebook變量嗎?您可能希望使用NuGet來引用該項目,因爲Prabir(其中一個主要SDK開發人員)已經連接了NuGet程序包以自動配置您的web.config與自定義配置項目(您仍然需要有一個Facebook應用程序並連接配置有喜歡你的應用程序的祕密和應用ID的所有必要的附加信息(這些都是你需要的主要事情2)

+0

當然,在那裏,做到了這一點。這不是一個配置問題,Q更新。 – 2011-03-29 12:54:09