Я - большой поклонник Экономия стопка совместимости с Facebook. Вы сказали, что они кодируют, будет, вероятно, работать на той же машине, таким образом, это могло быть излишество, но можно все еще использовать его.
Рассмотрим следующий отрывок из документации модуля LWP :: UserAgent
:
$ ua-> учетные данные ($ netloc, $ realm)
$ ua- > учетные данные ($ netloc, $ realm, $ uname, $ pass)
Получить / установить имя пользователя и пароль, которые будут использоваться для области.
$ netloc
- это строка форма«<хост>: <порт>»
. Имя пользователя и пароль будут переданы только этому серверу. Пример:$ ua-> учетные данные ("www.example.com:80", "Some Realm", "foo", "secret");
Замените
$browser->credentials("http://somesite.com:80","realm-name",$username=>$password);
на
$browser->credentials("somesite.com:80","realm-name",$username=>$password);
При возникновении проблем такого рода используйте сниффер HTTP для отслеживания транзакции, чтобы вы могли видеть заголовки, отправляемые вашей программой. В этом случае вы, вероятно, вообще не отправляете учетные данные, поскольку статус HTTP - 401 вместо 403. Обычно это означает, что вы допустили ошибку с учетными данными, как отмечает gbacon в своем ответе .