今天我一直在尝试在微软开发的MVC 4 Facebook API中编程一点(基于示例:http ://www.asp.net/mvc/tutorials/mvc-4/aspnet-mvc-facebook -生日应用)
到目前为止,我设法操纵了 MyAppUser 模型等。一切正常并按预期工作。当我通过控制器切换时,我只有一个小问题。
有没有办法通过控制器保留 FacebookContext 对象?
不幸的是,上面的示例(来自 Microsoft)仅在 Home 控制器中加载 MyAppUser,如下所示:
[FacebookAuthorize("email", "user_photos")]
public async Task<ActionResult> Index(FacebookContext context) {
if (ModelState.IsValid) {
var user = await context.Client.GetCurrentUserAsync<MyAppUser>();
return View(user);
}
return View("Error");
}
如果我在应用程序中使用另一个控制器,我该怎么办?如何获取 FacebookContext 引用以获取用户?
我尝试过的事情:
将 FacebookContext 上下文放入另一个控制器(始终为空)
将 FacebookContext 对象放入 Session 或 ViewBag - 无济于事,而且听起来太脏了。
我在这里错过了一些重要的东西吗?
我只是想拥有一个不同的控制器,它有几个操作来管理用户的个人资料,这将与 Facebook 的数据完全分开(通过本地托管的数据库)。我需要加载上下文的唯一原因是获取当前用户的电子邮件地址以在此基础上创建他们的帐户。
任何帮助将不胜感激,因为我花了相当多的时间试图修复它。
我的示例控制器可能是:
public ActionResult Manage()
{
var user = await context.Client.GetCurrentUserAsync<Models.MyAppUser>();
if (MyDALFunction.GetUserByMail(user.Email) == null) {
// Create user functions, create a ViewModel, pass it on and do some editing.
}
return View(user);
}