Преамбула. В нашем приложении (iframe) при заходе в систему запрашивается users.hasAppPermission - MESSAGING, затем - users.getInfo текущего пользователя (фио, автар и т.п.). После в процессе работы приложения - запросы users.getInfo.
Наблюдается две проблемы с сессией
1) Юзер заходит в приложение и сразу при заходе на первый же запрос получает {"error_code":102,"error_msg":"PARAM_SESSION_EXPIRED : Session expired","error_data":null}
Непонятно как это может быть, т.к. по логике он должен был зайти на страницу с игрой, то есть сессия должна как-то продлиться, т.к. пользователь явно находится в системе.
2) Юзер находится в системе, играет (первый случай удачно пройден). Через некоторое время система генерирует запрос users.getInfo. Ответ - аналогичен первому случаю. При этом "некоторое время" может быть 30 минут, может быть 2 часа, может и больше - зависит от активности пользователя и окружения.
Вопрос. Можно ли как-либо этой проблемы избежать или ее обойти, создав/получив новую сессию или продлив текущую (для случая 1)? И можно ли как-либо продлить активную сессию (для случая 2)?
Или, может быть, есть какие-нибудь альтернативные варианты обхода/решения этой проблемы?
Юзеры, вполне очевидно, недовольны, когда они в процессе активной игры не могут воспользоваться соц.возможностями. Просить их для этого перелогиниться или перезапустить приложение - это совершенно не user-friendly.
Вопрос навскидку - а точно сессия не кешируется, и не используете сохраненное значение от прошлого захода пользователя, вместо переданного в ваш iframe параметра?
То что вы описали - выглядит как критический баг, но жалоб от разработчиков и пользователей нет по этому поводу, так что возможно что проблема в интеграции?
Особенно интересует первый случай (заход и сразу SESSION_EXPIRED).
Второй случай в принципе можно списать на то, что пользователи выходят из аккаунта в другой вкладке чтобы перелогиниться. Это, конечно, никак не отследить нашими средствами, но вполне может быть причиной. Первый случай как-то логически объяснить у нас ввиду недостатка информации пока не получается.
Кеширование параметра сессии на нашей стороне исключено, так как в качестве враппера для flash мы используем статический HTML файл, в котором при загрузке с помощью javascript считываем переданные в IFRAME GET параметры
Если можно - было бы неплохо, если бы вы смогли посмотреть в вашей внутренней статистике, если конечно вы логируете PARAM_SESSION_EXPIRED, выделяются ли наши приложения на фоне остальных по количеству этих ошибок.
Аналогичная ситуация, используем fapi5.js из flash игры через ExternalInterface.
У большинства игроков проблем нет, но в логах видим много ошибок
PARAM_SESSION_EXPIRED : Session expired
падает на первом же запросе, после обновления страницы с игрой проходит