Я работал над приложением .NET MVC / Azure / SQL Azure / Facebook, используя facebook c # sdk.
Это заняло некоторое время, но, кажется, оно регистрирует пользователей, и я могу собирать соответствующие данные, необходимые для использования приложения.
Не вдаваясь в то, что представляет собой приложение, пользователь проходит трехэтапный процесс, как только пользователь добирается до конца процесса, я запускаю некоторые сгенерированные данные в твиттер-API, чтобы опубликовать твит, а также сгенерировать сокращенный URL-адрес, используя Bit.ly API.
Затем я даю пользователю возможность публиковать сообщения на своей стене в Facebook. Я могу получить публикацию приложения с правильными данными на стене пользователя, хорошо.
Проблема, с которой я сталкиваюсь, - это URL-адрес с идентификатором на конце, который, как предполагается, переводит любого человека, который щелкает по нему, в частичное представление, отображающее соответствующие данные для идентификатора в URL-адресе.
URL выглядит следующим образом: http: //apps.facebook.com/myapp/?id=1.
У меня есть два открытых индекса ActionResult (идентификатор строки), один с параметром (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
URL этого приложения в Facebook
http: //apps.facebook.com/myapp/ << это будет маршрут / Home / Index </p>
отображает что-то вроде этого
http: //myapp.cloudapp.net/ << это будет маршрут / Home / Index </p>
поэтому я предполагаю, 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 с помощью URL-адреса холста Facebook & facebook c # sdk.
Для моего приложения важно иметь возможность направлять пользователей к определенному / частичному представлению на основе переданного идентификатора.
Правильно ли я иду по этому пути, может ли кто-нибудь увидеть недостаток в моем подходе, и это их что-то, что я упускаю или не делаю.
С наилучшими пожеланиями
Patrick