Я использую последнюю версию fb sdk iframe canvas 4.2.1 и столкнулся с проблемой, когда пользователь впервые заходит на мой сайт по URL, по которому они могут щелкнуть через стену своих друзей:
http://apps.facebook.com/<mysite>/Video/View/23?ItemID=8
Я предоставляю приложению основные разрешения, но URL-адрес возврата выглядит следующим образом:
http://apps.facebook.com/<mysite>/Video/View/23
Это полностью отрублено ItemID ???
Это ошибка в SDK? Если да, то как мне это исправить?
Мой маршрут настроен как:
routes.MapRoute(
"ViewItem",
"{controller}/{action}/{ItemID}/{TR}",
new { controller = "Video", action = "View", TR = UrlParameter.Optional }
);
Начало действия моего контроллера выглядит так:
[HttpPost]
[CanvasAuthorize]
public ActionResult View(long ItemID, long? TR)
{
...
Примечание: URL генерируется стандартными средствами, поэтому, пожалуйста, не говорите мне, что моя строка запроса неверна. Я использую Url.CanvasAction для генерации URL-адреса, так что все очень просто до тех пор, пока пользователь не щелкнет и не перенаправится для аутентификации приложения, а затем не вернется со строкой запроса.
Я попытался пройтись по коду, чтобы увидеть, где я ошибаюсь, но не могу его найти, самое близкое, к чему я пришел, это то, что файл facebookredirect.axd - это последняя вызываемая вещь, и где-то внутри нее, это все набивает!
Буду признателен за любую помощь или совет
спасибо ...
<< ОБНОВЛЕНИЕ >>
С тех пор я написал еще одно действие для проверки и получения необходимых разрешений для определенного процесса.
[HttpPost]
public ActionResult RequestPermission(string Permission, string ReturnUrl, long? TR)
{
FacebookApp app = new FacebookApp();
var authorizer = new CanvasAuthorizer(app);
if (Permission.Length > 0)
{
authorizer.Perms = Permission;
authorizer.ReturnUrlPath = Server.UrlDecode(ReturnUrl);
authorizer.Authorize();
}
return new EmptyResult();
}
Я получаю сообщение об ошибке «Обнаружен потенциально опасный путь запроса» от asp.net.
URL в адресной строке выглядит так:
http://www.<myinternetsite>.com/facebookredirect.axd//<myfacebookapp>/http://apps.facebook.com/<myfacebookapp>/Video/View/108?perms=email&selected_profiles=55424639&session={%22session_key%22%3A%111.PfJ_2D8Q8a71orTjpzWGFQ__.3600.1295251200-763424639%22%2C%22uid%3A%22763424639%22%2C%22expires%22%3A1295251200%2C%22secret%22%3A%22Chi8iKzFqQg9zb8vdMPNag__%22%2C%22access_token%22%3A%22124828944240034|2.PfJ_2Dfdfdf1orTjpzPHFQ__.3600.4343451200-343424639|S4-dr00eU6GXUmoatU7QOWGGUVE%22%2C%22sig%22%3A%22322985031c75727b9fe31993dd2e3%22}
Примечание. Я намеренно изменил некоторые коды и символы, указанные выше, чтобы предотвратить взлом моего сайта.
Одна вещь, которую я уже могу заметить в приведенном выше URL-адресе, это обратный URL-адрес:
http://apps.facebook.com/<myfacebookapp>/Video/View/108?perms=email...
что должно читаться так:
http://apps.facebook.com/<myfacebookapp>/Video/View/108?ItemID=11&perms=email...
обратите внимание, как мой ItemID удаляется CanvasAuthorizer. Это, очевидно, ошибка, этого не следует делать! Оставь эту чертову вещь в покое!
Возможно, авторизатору нужен URL для кодирования моего returnUrl ???
Любая помощь здесь ???