вторник, 15 января 2008 г.

создание нового поста в дневнике на livejournal на php

Оказалось, что создавать новые записи в дневнике на livejournal.com из php очень просто. Я вообще не читал документации по api livejournal, когда приступал к написанию этой функции единственное, что я знал, так это то, что как и все блогерские апи используется протокол xml-rpc. У меня есть готовый работающий пример - это livejournal cross poster - это плагин к wordpress, который я использую. Итак немного покопавшись в исходнике этого плагина, я написал свою функцию. Для работы этой функции требуется модуль wp-includes/class-IXR.php, который реализует протокол xml-rpc. Выяснил как происходить авторизация (отправка логина и пароля) в livejournal через xml-rpc: получаем значение md5 пароля складываем его со строкой отклика, полученной специально для этого и получившейся строке снова применяем md5, которая и отправляется. Подробности в исходнике: md5($challenge . md5($pass)); что называется просто и со вкусом. Далее в софт для блогов я привожу исходный текст моей функции, которая возвращает ID новой записи в дневнике на livejournal.com.

function PostToLivejournal($user, $pass, $Subj, $Content) {
$host = ‘www.livejournal.com’;
$client = new IXR_Client($host, ‘/interface/xmlrpc’);
// получить отклик для пароля
if (!$client->query(’LJ.XMLRPC.getchallenge’)) {
echo ‘livejournal error: ‘.$client->getErrorCode().’ : ‘.$client->getErrorMessage();
return false;
}
$response = $client->getResponse();
$challenge = $response[’challenge’];

$args = array();
$args[’username’] = $user;
$args[’auth_method’] = ‘challenge’;
$args[’auth_challenge’] = $challenge;
$args[’auth_response’] = md5($challenge . md5($pass));

// Makes LJ expect UTF-8 text instead of ISO-8859-1
$args[’ver’] = “1″;

$args[’event’] = $Content;
$args[’subject’] = $Subject;

$date = time();
// All of the relevent dates and times
$args[’year’] = date(’Y', $date);
$args[’mon’] = date(’n', $date);
$args[’day’] = date(’j', $date);
$args[’hour’] = date(’G', $date);
$args[’min’] = date(’i', $date);

//запрещаю комментарии
$args[’props’] = array(
“opt_nocomments” => true,
“opt_preformatted” => true,
“opt_backdated” => !false,
‘taglist’ => ‘message’
);
$args[’security’] = “public”;

// только теперь делаю вызов
if (!$client->query(’LJ.XMLRPC.postevent’, $args)) {
echo ‘Something went wrong - ‘.$client->getErrorCode().’ : ‘.$client->getErrorMessage();
return false;
}
$response = $client->getResponse();
return $response[’itemid’];
}

Здесь можно оставить свои комментарии. Выпуск опубликован при помощи плагина subscribe.ru and blogspot.com cross poster

Комментариев нет: