ライブドアブログにPHPスクリプトで投稿したい
お世話になります。
ライブドアブログにPHPスクリプトで
投稿するためのコードを
あるブログで見つけましたが、
下記のコードを実行すると
「<?xml version="1.0" encoding="utf-8" ?>
<error>Invalid login</error>」
というメッセージが表示します。
id 、パスワードはあっています。
エンコード方法が、間違っているんでしょうか?
「curl_setopt($ch, CURLOPT_POST, true);」
でのメッセージだと推測します。
そのブログの管理人との連絡方法が
ありません。
どなたか、お手数をおかけしますが、
アドバイスをいただけると幸いです。
<?php
$livedoor_id = "id"; // livedoorID
$password = "APIKEY"; // パスワード
$title = "english"; // 記事タイトル
$text = "this is a pen"; // 記事本文
$atomapi_url = "http://cms.blog.livedoor.com/atom/";
$created = date('Y-m-d\TH:i:s\Z');
$nonce = pack('H*', sha1(md5(time())));
$pass_digest = base64_encode(pack('H*', sha1($nonce.$created.$password)));
//$pass_digest = base64_encode(pack('H*', sha1($nonce.$created.strtolower(md5($password)))));
$wsse =
'UsernameToken Username="'.$livedoor_id.'", '.
'PasswordDigest="'.$pass_digest.'", '.
'Nonce="'.base64_encode($nonce).'", '.
'Created="'.$created.'"';
$text64= base64_encode($text);
$rawdata =
'<?xml version="1.0"?>'.
'<entry xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">'.
'<title type="text/html" mode="escaped">'.$title.'</title>'.
'<dc:subject type="text/html" mode="escaped">'.$category.'</dc:subject>'.
'<content type="application/xhtml+xml" mode="base64">'.$text64.'</content>'.
'</entry>';
//echo $rawdata;
$headers =array(
'X-WSSE: ' . $wsse,
'Expect:'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $atomapi_url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER,$headers);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS,$rawdata);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($ch);
curl_close($ch);
//出力結果確認用
echo $res;
?>
お礼
お礼遅くなって申し訳ありません。 わかりやすい回答ありがとう御座います。 法律で縛るのは難しいのですね。難解な問題ですね。