はてなブックマークへの投稿をAPIを利用してPHPで実装しようと思っているのですが、
うまくいきません。
認証は通っているのですが、400 Bad Requestが返ってきてしまいます。
XMLの投げ方が悪いのでしょうか?
文法が間違っているのでしょうか?
****************************************************
<?php
require_once 'HTTP/Client.php';
$url="http://b.hatena.ne.jp/atom/post";
$http = new HTTP_Client();
$http->setDefaultHeader('X-WSSE','XXXX');
$xml = "<entry xmlns=\"http://purl.org/atom/ns#\">\n"
."<title>dummy</title>\n"
."<link rel=\"related\" type=\"text/html\" href=\"http://www.example.com/\" />\n"
."<summary type=\"text/plain\">サンプルコメントです</summary>\n"
."</entry>\n";
$http->post($url, $xml);
$response = $http->currentResponse();
print $response['code']."\n";
print $response['headers']."\n";
print $response['body']."\n";
?>
WSSE を生成せず固定で書かれているように見受けられますが,Nonce,Created,パスワードから動的に生成するものですので,このあたりのコードを見直してみてください
回答ありがとうございます。
下記内容を付加して実行しましたが同じ結果でした。(400 Bad Request)
本文にもありますが、認証自体は成功していると思います。
*****************************************************
$user = 'userid';
$pass = 'password';
$nonce = sha1(md5(time().rand()), TRUE);
$created = date('Y-m-d\TH:i:s\Z');
$digest = base64_encode(sha1($nonce . $created . $pass, TRUE));
$wsse_header = sprintf('UsernameToken Username="%s", PasswordDigest="%s", Nonce="%s", Created="%s"',$user, $digest, base64_encode($nonce), $created);
$http->setDefaultHeader('X-WSSE',$wsse_header);