如何使用Facebook C#SDK和ASP.NET MVC执行jQuery AJAX请求

时间:2011-03-29 05:48:01

标签: facebook-c#-sdk

我正试图在我的Facebook C# SDK Canvas应用程序中对我的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调用?

2 个答案:

答案 0 :(得分:1)

诀窍是在ajax调用中post the signed_request data(感谢ntotten):

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

答案 1 :(得分:0)

您是否在web.config中设置了Facebook变量?您可能希望使用NuGet来引用该项目,因为Prabir(主要SDK开发人员之一)已连接NuGet包以使用自定义配置项自动配置您的web.config(您仍需要拥有Facebook应用程序并连接配置所有必要的附加信息,如您的应用程序密码和应用程​​序ID(这些是您需要的主要两件事)