Можете ли вы проверить, получаете ли вы действующий сеанс с Facebook, прежде чем пытаться использовать stream.publish? Если вы получаете расширенное разрешение offline_access, у вас будет объект сеанса, срок действия которого истекает = 0.
Вы также можете попробовать вызвать методы API users.hasAppPermission, чтобы убедиться, что у вас есть разрешения.
Вы просто делаете POST'ы прямо на http://api.facebook.com/restserver.php? Включаете ли вы данные запроса в тело сообщения POST? Вы также должны включить в заголовки заголовок Content-Type: application / x-www-form-urlencoded.
Я думаю, что может быть сложно делать прямые вызовы restserver.php. Можно ли использовать клиентскую библиотеку, например клиентскую библиотеку Javascript?