Im используя ГФ SDk IFrame холст 4.2.1 Lastest версию и пришли acrosss проблемы с когда пользователь первым приходит на мой сайт через URL, что они могут нажать на через их друзей стене:FacebookRedirect.axd не сохраняет строку запроса?
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 генерируется с помощью стандартных средств, поэтому, пожалуйста, не говори мне, что мой QueryString неправильно. Я использую Url.CanvasAction для генерации URL-адреса, так что все доходит до того момента, когда пользователь нажимает и перенаправляется на аутентификацию приложения, после чего возвращается с выверенной кнопкой.
Я пробовал переходить через код, чтобы увидеть, где я ошибаюсь, но не могу его найти, ближайший я пришел к тому, что файл facebookredirect.axd - это последнее, что нужно назвать и где-то внутри , его начинка все это!
Любая помощь или советы будут оценены
спасибо ...
< < UPDATE >>
Я так написал еще одну акцию, чтобы проверить и получить необходимые разрешения для конкретного процесса ,
[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 ???
Любая помощь здесь ???
Hi Stefan, можете ли вы описать больше своего решения? или отправьте мне код для изучения и использования ... спасибо! –
@Pazman добавил исправленный код для вас. Нет гарантии, что это работает полностью правильно, но, надеюсь, FB SDK будет включать дух патча в конечном итоге –