我正试图在我的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调用?
答案 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(这些是您需要的主要两件事)