我一直在使用facebook c#sdk处理.NET MVC/Azure/SQL Azure/Facebook应用程序。Facebook C#SDK,.NET MVC,将参数传递给ActionResults与Facebook应用程序URL
花了一段时间,但我似乎让它登录用户,无法捕获使用该应用程序所需的相关数据。
没有进入应用程序,用户需要经历3个步骤的过程,一旦用户进入过程结束,我将一些生成的数据发送到twitter api以发布推文并生成缩短的url使用Bit.ly api。
然后我给用户发布到他们的facebook墙上的选项。我可以通过正确的数据将应用程序发布到用户墙上。
我面对的问题是,在最终的id上设置的URL会让任何人将其点击到一个局部视图上,从而在URL上显示相关数据。
URL看起来像这样的http://apps.facebook.com/myapp/?id=1 我有两个公共的ActionResult指数(字符串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{
}
});
问题是传递参数给的ActionResult从Facebook的帆布
这个Facebook应用程序URL HTTP://apps.facebook.com/myapp/ < <这将是航线/首页/索引
映射到这样的事情 HTTP://myapp.cloudapp.net/ < <这将是路径/首页/指数
这样的IM假设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
);
}
谁能帮助我或建议将参数传递给MVC控制器动作结果与Facebook的画布网址& facebook c#sdk。
它对我的应用程序来说很重要,能够根据传递的ID将用户导向到特定的视图/部分视图。
我是否以正确的方式开展工作,任何人都可以在我的方法中看到缺陷,并且是他们即将失去或不在做的事情。
问候
帕特里克
好了,如果我将它们发送到http://myapp.cloudapp.net/?id=1 我怎么才能到用户返回到Facebook中的任何想法, – Lismore 2012-02-12 22:02:59
至少大部分达林应用,你已经回答了这个问题。 为了更好的解决方案,我会考虑解决方案稍久一点,我认为将用户引导出Facebook并不是那么糟糕。我会尝试更多的事情。 谢谢 – Lismore 2012-02-12 22:07:54
我终于解决了它, 这个问题不是你上面讨论的,虽然它确实让我找到了问题所在。 Ajax调用是在同一个域, ' $获得( '/主页/ GetUniqueView /?ID =' + STR,功能(DATA6){ $( '#contentDiv')。HTML (data6); $('#imgLoading')。css(“display”,“none”); }); 注相比,1日1 URL时,.NET MVC路线失踪的第一个正斜杠“/” Notw它是作为我预期表现, – Lismore 2012-02-13 03:46:16