【发布时间】:2012-02-12 21:52:59
【问题描述】:
我一直在使用 facebook c# sdk 开发 .NET MVC / Azure / SQL Azure / Facebook 应用程序。
花了一段时间,但我似乎让它登录用户,我能够捕获使用该应用程序所需的相关数据。
在不了解应用程序的情况下,用户会经历一个 3 步过程,一旦用户完成该过程,我会将一些生成的数据发送到 twitter api 以发布推文并生成一个缩短的 url 使用Bit.ly api。
然后我让用户可以选择在他们的 Facebook 墙上发帖。我可以将带有正确数据的应用程序发布到用户墙上。
我面临的问题是最后带有 id 的 URL,它假定任何点击它的人都会看到显示与 URL 上的 id 相关的数据的部分视图。
网址看起来像这样 http://apps.facebook.com/myapp/?id=1 我有两个 public ActionResult Index(string id) ,一个带有参数(POST),一个没有(GET)
`
[Authorize]
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Index()
{
ViewData["Message"] = "Welcome to The My App Website!";
ViewData["id"] = "null";
try
{
var facebookId = long.Parse(User.Identity.Name);
var user = InMemoryUserStore.Get(facebookId);
var client = new FacebookClient(user.AccessToken);
dynamic me = client.Get("me");
ViewData["accessToken"] = user.AccessToken.ToString();
ViewData["FirstName"] = me.first_name;
ViewData["LastName"] = me.last_name;
ViewData["Email"] = me.email;
ViewData["uid"] = facebookId.ToString();
}
catch (Exception)
{
throw;
}
return View();
}
`
[Authorize]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(string id)
{
ViewData["Message"] = "Welcome to My App!";
ViewData["id"] = id;
try
{
var facebookId = long.Parse(User.Identity.Name);
var user = InMemoryUserStore.Get(facebookId);
var client = new FacebookClient(user.AccessToken);
dynamic me = client.Get("me");
ViewData["accessToken"] = user.AccessToken.ToString();
ViewData["FirstName"] = me.first_name;
ViewData["LastName"] = me.last_name;
ViewData["Email"] = me.email;
ViewData["uid"] = facebookId.ToString();
}
catch (Exception)
{
throw;
}
return View();
}
在使用 JQuery 的索引页面上,我这样做了,
'
$(document).ready(function () {
var str = "@ViewBag.id";
if(str != "null" || str != null){
$('#imgLoading').css("display", "inline");
$('#side').css('display', 'none');
$('#contentDiv').html("");
$.get('home/GetUniqueView/?id=' + str, function (data6) {
$('#contentDiv').html(data6);
$('#imgLoading').css("display", "none");
});
}else{
}
});
问题是从 facebook 画布向 actionresult 传递参数
此 Facebook 应用程序网址 http://apps.facebook.com/myapp/
映射到这样的东西 http://myapp.cloudapp.net/
所以我假设 http://apps.facebook.com/myapp/?id=1 映射到 http://myapp.cloudapp.net/?id=1
在我的 Global.asax 页面中有
`
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
任何人都可以帮助我或建议使用 Facebook 画布 url 和 facebook c# sdk 将参数传递给 MVC 控制器操作结果。
对于我的应用来说,能够根据传递的 id 将用户定向到特定视图/部分视图非常重要。
我是否以正确的方式进行此操作,任何人都可以看到我的方法中的缺陷吗?他们是我缺少的东西还是没有做的事情。
最好的问候
帕特里克
【问题讨论】:
标签: facebook asp.net-mvc-3 azure facebook-c#-sdk asp.net-mvc-routing