Недавно я обнаружил, что идентификаторы сессии PHP более сложны, чем я думал.
Чтобы они работали, ваш транспорт XMLRPC должен полностью поддерживать файлы cookie, которые используются для аутентификации Drupal.
Без файлов cookie каждый запрос рассматривается как новый анонимный запрос и ему присваивается новый идентификатор сеанса. Так что тот факт, что вы вошли в систему, ничего не значит для следующего вызова xmlrpc, который вы делаете.
Я делаю некоторую работу в python и создал собственный транспортный объект для поддержки куки, и теперь все это работает для меня. Я узнал, как сделать это в Python здесь:
http://osdir.com/ml/python.cherrypy/2005-12/msg00142.html
(edit-add) Я мог бы также добавить, что модуль services довольно плох с отчетом об ошибках. Например, если вы отправляете аргумент в виде строки, когда он ожидает массив (со строкой в массиве), вы часто можете получить ошибки отказа в доступе, которые на самом деле не отражают факт наличия ошибки параметра.
Убедитесь, что служба работает должным образом, протестировав ее в разделе «Администрирование»> «Создание сайта»> «Службы»> «Обзор» и выберите службу, которую вы хотите использовать.