使用CanvasAuthorize进行装饰时,AJAX调用不会触发操作方法

时间:2011-05-19 11:32:57

标签: asp.net-mvc facebook asp.net-mvc-3 asp.net-ajax facebook-c#-sdk

我试图通过我的FB应用程序将它们发布到墙上来分享Facebook上的项目。我在客户端和服务器端设置了所有内容(ASP.NET MVC3),但我注意到当ActionMethod使用CanvasAuthorize属性进行修饰时,该方法根本不会被触发。那么我有什么可以做的吗?

P.S:我通过AJAX调用检查了发布的数据,结果一切都很好。此外,如果我评论[CanvasAuthorize]行,该方法会被触发并且参数都很好,除非我进入fb.Post()调用,它会抱怨没有access_token是有意义的。

    //[CanvasAuthorize(Permissions = "publish_stream")]
    public ActionResult PostItem(string message, string link, string picture, string name)
    {
        var fb = new FacebookWebClient();
        var postArgs = new Dictionary<string, string>();
        postArgs["message"] = message;
        postArgs["link"] = link;
        postArgs["picture"] = picture;
        postArgs["name"] = name;
        fb.Post("/me/feed", postArgs);
        return Json(new {result = "success"}, JsonRequestBehavior.AllowGet);
    }

有什么想法吗?

更新

以下是后续行动:Passing the signed_request along with the AJAX call to an ActionMethod decorated with CanvasAuthorize

1 个答案:

答案 0 :(得分:0)

使用您通过ajax调用传递的隐藏字段。

您可以自己实现或使用:

<%: Html.FacebookSignedRequest() %>