Facebook C # SDK, .NET MVC, передача параметров в ActionResults с помощью URL-адреса приложения Facebook - PullRequest
0 голосов
/ 13 февраля 2012

Я работал над приложением .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

1 Ответ

0 голосов
/ 13 февраля 2012

Правильно ли я поступлю, может ли кто-нибудь увидеть изъян в моем Подход и их что-то я пропускаю или не делаю.

Вы, похоже, пытаетесь выполнить запрос AJAX от http://apps.facebook.com/myapp до http://myapp.cloudapp.net/, что, очевидно, невозможно из-за встроенных в браузеры ограничений 10000 * с той же политикой происхождения . Это в основном не позволяет отправлять междоменные запросы AJAX. Вот руководство , в котором рассматриваются некоторые возможные обходные пути.

...