У меня есть сайт Drupal с пользовательскими логинами. В этот сайт встроено приложение Flash, которое показывает некоторые данные всем, но предоставляет дополнительные функции, если пользователь вошел в систему. Изнутри Flash я использую XMLRPC для доступа к методу system.check (чтобы определить, вошел ли пользователь в систему) и методу user.login (для входа в систему пользователя из Flash).
В Flash все работает нормально. Однако состояние входа в систему Flash не соответствует остальной части сайта. Например, если я вызываю user.login через XMLRPC, последующие вызовы system.check показывают, что я вошел в систему, но страница пользователя Drupal по-прежнему говорит, что я вышел из системы. Или, если я вошел в оба места и затем вышел из системы через страницу пользователя Drupal, следующий вызов system.check по-прежнему указывает, что я вошел в систему.
Как я могу сделать состояние входа согласованным между графическим интерфейсом Drupal и моим встроенным приложением Flash?
(Примечание. Я не использую какую-либо библиотеку XMLRPC, я просто создаю необходимый XML-файл вручную и отправляю методы POST с использованием объекта URLRequest.)
РЕДАКТИРОВАТЬ: с помощью этого вопроса , а также путем тестирования с помощью веб-прокси я подтвердил, что файл cookie SESS, возвращаемый страницей входа пользователя, забирается и отправляется приложением flash.
РЕДАКТИРОВАТЬ: И теперь я экспериментально показал, что, хотя Flash (через Safari) отправляет тот же файл cookie, он возвращает РАЗНЫЕ файлы cookie при подключении к службе XMLRPC, чем при запросе и странице HTML. Другими словами, Drupal просто не поддерживает такую синхронизацию, и я застрял. Я принимаю ответ ниже, который поставил меня на правильный путь.
РЕДАКТИРОВАТЬ: AMHPHP не полностью выпущен для Drupal6 на момент написания этой статьи, но он все равно был установлен на сайте. Используя библиотеку DrupalSite , я очень легко мог входить и выходить из сайта с флэш-памяти, и вход в систему оставался согласованным между flash и HTML.