使用Facebook C#SDK表单发布

Rof*_*ers 2 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();
}
Run Code Online (Sandbox Code Playgroud)

形式就是这样

<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>
Run Code Online (Sandbox Code Playgroud)

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

编辑

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

但是,如果有人可以提出任何其他建议.请帮忙!

Nat*_*ten 5

实际上有一个MVC表单的助手可以解决这个问题.

帮助器进入您的表单:

剃刀语法:

@Html.FacebookSignedRequest();
Run Code Online (Sandbox Code Playgroud)

ASP.NET语法

<%=Html.FacebookSignedRequest() %>
Run Code Online (Sandbox Code Playgroud)

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