使用Facebook C#SDK表单发布

时间:2011-02-10 17:30:48

标签: c# facebook facebook-c#-sdk

有人能指出我如何在MVC应用中使用带有Facebook C#SDK的表单帖子吗?这是一个基于iframe的Canvas应用程序。

我有以下代码

[HttpPost, CanvasAuthorize(Permissions = "publish_stream")]
public ActionResult Enter(FormCollection col)
{
    var fbApp = new FacebookClient(this.CurrentSession.AccessToken);

    JsonObject result = (JsonObject)fbApp.Get("me");

    long FacebookId = long.Parse(result["id"].ToString());

    //CODE TO INSERT GOES HERE

     return View();
}

形式就是这个

<form action="/EnterComp/Enter" enctype="multipart/form-data" method="post">
<fieldset>
    <legend>Fields</legend>
    <div class="editor-label">
        <label for="Text">Text</label>

    </div>
    <div class="editor-field">
        <input id="Text" name="Text" type="text" value="" />

    </div>
    <div class="editor-label">
        <label for="ImagePath">ImagePath</label>
    </div>
    <div class="editor-field">

        <input type="file" name="ImagePath" id="ImagePath">

    </div>
    <div class="editor-label">
        <label for="VideoPath">VideoPath</label>
    </div>
    <div class="editor-field">
        <input type="file" name="VideoPath" id="VideoPath">

    </div>

    <p>
        <input type="submit" value="Create" />
    </p>
</fieldset>
</form>

但每次我提交表单时,它似乎都会重新进行身份验证 - 从而丢失表单集合。现在我确信有一些非常简单的东西,我很遗憾,任何帮助都会受到赞赏。

修改

我想我已经在这里回答了我自己的问题,但万一其他人跟我说话。对我来说,解决方案至少是here

然而,如果有人可以提出任何其他建议。请帮忙!

1 个答案:

答案 0 :(得分:5)

实际上有一个MVC表单帮助器可以解决这个问题。

帮助者进入你的表格:

Razor语法:

@Html.FacebookSignedRequest();

ASP.NET语法

<%=Html.FacebookSignedRequest() %>

所有这一切实际上都是将您的signed_requeset存储为表单上的隐藏。这样,当发布表单时,Facebook身份验证器将能够重新授权请求。