有人能指出我如何在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。
然而,如果有人可以提出任何其他建议。请帮忙!
答案 0 :(得分:5)
实际上有一个MVC表单帮助器可以解决这个问题。
帮助者进入你的表格:
Razor语法:
@Html.FacebookSignedRequest();
ASP.NET语法
<%=Html.FacebookSignedRequest() %>
所有这一切实际上都是将您的signed_requeset存储为表单上的隐藏。这样,当发布表单时,Facebook身份验证器将能够重新授权请求。