目指せ1級!30代サラリーマンボルダリング日記

都内IT企業で働く30代サラリーマンのクライミング記録

タグ:ブログ

前回(アメブロのAtomAPIが倒せない)の記事から数カ月。。
アクセス解析見てもやっぱり同じように困ってる人がいるみたい。

というわけで、久しぶりに調べ直した。
前回のソースと違う部分をピックアップ。
やっぱりWSSE認証がポイントでした。これさえ通ればあとはすんなり。


$nonce = sha1(md5(time()));


ランダム文字生成だから何でもいいとは思うけど。


$pass_digest = base64_encode(pack('H*', sha1($nonce.$created.strtolower(md5($password)))));


ここが全然逆だった。
大文字にするんじゃなくて小文字にする。


あとはgetで記事情報を取得し、その結果からpostするURLをとって記事を投げるみたい。

今回使用したソース。
続きを読む
    このエントリーをはてなブックマークに追加

前回のlivedoorBlogにAtomAPIで投稿に引き続きアメブロもやっちゃうぜーと思ったらハマった。
同じAtomAPIだしコード同じで行けるだろうと思ったら違うらしい。

いろいろ調べてみるとWSSE認証が独自ぽい。
でもいくら調べても同じように困ってる人はいても、解決してる人が見つからない。。

追記)倒しました!!(2010-02-03)  >>こちらの記事へ。



これまで調べてlivedoorBlogと違うと思われる部分がpass_digestの作成部分。

livedoorBlog
$pass_digest = base64_encode(pack('H*', sha1($nonce.$created.$password)));

アメブロ
$pass_digest = base64_encode(pack('H*', sha1($nonce.$created.strtoupper(md5($password)))));

パスワードをmd5したあとに大文字化するらしいとの情報。
デマかホントかわかりません。。

返ってくるレスポンスは
CurlResponse Object
(
    [body] => 
X-WSSE authentication required
    [headers] => Array
        (
            [Http-Version] => 1.1
            [Status-Code] => 401
            [Status] => 401 Unauthorized
            [Set-Cookie] => BIGipServerPool_comment=3395622060.20480.0000; expires=Sat, 17-Oct-2009 01:32:13 GMT; path=/
            [Date] => Fri, 16 Oct 2009 02:18:33 GMT
            [Server] => Apache
            [Content-Length] => 83
            [Content-Type] => application/x.atom+xml
        )

)

だめだー、なんか違うとこで間違ってるのか・・・。
今回使用したコードは以下。

続きを読む
    このエントリーをはてなブックマークに追加

前回の記事に引き続きAtomAPI用。
PHPとcURL使用。

<?php
require_once 'cURL.php';

$atomapi_url = "http://cms.blog.livedoor.com/atom/";
$livedoor_id = "your livedoor id"; /* livedoorID */
$password = "your password"; /* パスワード */
$category = "1"; /* カテゴリ */
$title = "sample"; /* 記事タイトル */
$text = "content"; /* 記事本文 */

$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)));
$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>';

$headers = array(
              "X-WSSE" => $wsse,
              "Content-Type" => "application/x.atom+xml",
              "Cache-Control" => "no-cache",
              );

$curl = new Curl();
$curl->headers = $headers;
$curl->options = array("POSTFIELDS" => $rawdata);
$res = $curl->post($atomapi_url);
?>
    このエントリーをはてなブックマークに追加

各サービスのエンドポイントメモ。
とりあえずXML-RPCに対応してそうなブログの一覧。
サービスhostpath
FC2blog.fc2.com/xmlrpc.php
gooblog.goo.ne.jp/xmlrpc.php
seesaablog.seesaa.jp/rpc
jugenYOURID.jugem.jp/xmlrpc.php
ココログapp.f.cocolog-nifty.com/t/api
ninjaYOURID.blog.shinobi.jp/XMLRPC/


XMLRPC::Liteモジュールを利用してPerlでの実装。
続きを読む
    このエントリーをはてなブックマークに追加

このページのトップヘ