Facebook c # sdk mvc3 проблема с CanvasAuthorize - PullRequest
0 голосов
/ 20 декабря 2011

Я создаю приложение mvc3 canvas, используя facebook c # sdk

Имя метода: create .

Я также делаю пост и у меня есть еще один метод создания с атрибутом [HttpPost] .

Когда я добавляю атрибут [CanvasAuthorize (Permissions = ExtendedPermissions)] к обоим методам создания, а ссылка с другой страницы вызывает этот метод создания, обычно метод get должен вызываться, но в этом случае метод post называется

Но если я прокомментирую метод записи , тогда он перейдет к методу get .

Есть идеи, как это решить.

Спасибо Арнаб

Ответы [ 2 ]

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

Это связано с тем, что авторизация холста публикует маркер доступа на странице.Единственный способ обойти это - создать другое действие, которое обрабатывает сообщение, и использовать это действие в представлении в качестве цели публикации.Это будет выглядеть примерно так:

// /MyController/MyAction
// Post and Get

[CanvasAuthorize(Permissions = ExtendedPermissions]
public ActionResult MyAction(MyModel data)
{
    MyModel modelData = data;

    if(data==null)
    {
        modelData = new MyModel();
    }
    else
    {
        modelData = data;
    }
    return View(modelData);
}

// /MyController/MyActionPost
// POST only

[HttpPost]
[CanvasAuthorize(Permissions = ExtendedPermissions]
public ActionResult MyActionPost(MyModel data)
{

    if(Model.IsValid)
    {
         //Processing code with a redirect at the end (most likely)
    }
    else
    {
         return View("MyAction", data);
    }
}

Тогда в вашем представлении MyAction:

@using (Html.BeginForm("MyActionPost", "MyController"))
{
    <!-- Form items go here-->

    <inpuy type="submit" value="Submit" />

    @Html.FacebookSignedRequest()
}
0 голосов
/ 28 декабря 2011

У меня та же проблема. Раньше он выполнял GET, затем внезапно, когда переходил к действию с атрибутом [CanvasAuthorize (Permissions = ExtendedPermissions)], он выполнял POST вместо GET.

...