2010年8月4日水曜日

アメブロへの投稿 via API

WSSEヘッダの生成でハマったのでメモ。

最初、前任者が livedoorへの投稿で使ってたやり方を踏襲して、

$nonce       = pack('H*', sha1(md5(time().rand().uniqid())));
$created     = date('Y-m-d\TH:i:s\Z');
$digest      = base64_encode(pack('H*', sha1($nonce . $created . strtolower(md5($password)))));
$wsse_text   = 'UsernameToken Username="%s", PasswordDigest="%s", Nonce="%s", Created="%s"';
$wsse_header = sprintf($wsse_text, $username, $digest, base64_encode($nonce), $created);

ってやってた。そしたら全然401エラーから先に進まないの。
参考になるサイトみても、理論上間違ってないし、これで通らない理由がわからん。
で、ふと気付いて。
$nonceの値、なんでこんなややこしいやり方で作ってんの?
どうにも不可思議だったので、極力シンプルに、

$nonce = sha1(md5(time()));
にしてみた。

・・・・・・・・・・・・ 認証通った。


なんじゃそりゃーーーー!!!!!

つわけで、今は記事投稿したら 403になるエラーに遭遇してハマっております。
困ったもんだ。

0 件のコメント:

コメントを投稿