Совершенно случайно, я думаю, что я ухмыльнулся, как работает SDK!
Примечание для разработчиков SDK: вы проделали замечательную работу, но попробуйте объяснить вещи немного лучше ...Используйте изображения и потоки данных, чтобы люди могли быстрее использовать ваш замечательный SDK!
Если в настройках Facebook у вас включен этот параметр:
Согласно документации говорится, что Facebook будет публиковать данные сеанса и другую информацию в вашей конечной точке в виде полей формы.например,
<input "signed-request" value="...
они не говорят, что это работает только тогда, когда вы находитесь в их домене, то есть:
http://apps.facebook.com/<yourAppNameHere>
он не будет публиковать что-либо за пределами своего домена, например:
http://www.<yourAppNameHere>.com
Теперь вы можете подумать, ну да!Но подождите, это еще не все!
Если вам нравятся я и вы используете Asp.Net MVC с включенным Iframe Canvas в качестве настроек приложения в Facebook, тогда при попытке использовать вспомогательные методы для рендеринга частичных страниц (эффективно пользовательские элементы управления)в веб-формах), и вы включаете это на своей странице:
<% = Html.Action ("MyItemsTotal", "Home")%>
К сожалению, в методе действия MyItemsTotal в контроллере Homeвы не получите данные сеанса.Почему вы спрашиваете ... потому что Asp.Net MVC использует запрос Get!
И, следовательно, ваши данные сеанса больше не существуют в этом контексте.Вы фактически звоните своему собственному домену.
В моей ситуации я только хочу получить userId, поэтому я мог бы сделать что-то вроде этого:
<% = Html.Action ("MyItemsTotal", "Home", новый RouteValueDictionary {{"UserID", FbApp.Session.UserId}})%>
И запросить это при возврате.
Лучшим подходом будет использование сеансавспомогательный класс для поддержки сеанса пользователей, от которого наследуется FacebookApp.Для любых целей и задач я могу использовать его любым удобным для меня способом, и он достаточно умен, чтобы хранить и раскрывать информацию о текущих пользователях в любом контексте.Тогда возникает вопрос: а как насчет пользователей, заходящих на ваш сайт за пределами Facebook, как новый класс FacebookApp определит это?
Мой ответ на этот вопрос заключается в том, что ему не нужно знать, какой домен его вызывает.на самом деле, ему просто нужно знать, что срок его действия истекает через определенное время, если он не используется.Чтобы сохранить целостность и, в-четвертых, нужно использовать идентификатор сеанса или какой-либо уникальный идентификатор facebook, передаваемый приложению.
Пища для размышлений: -P