2011-03-29 51 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