2010年4月21日水曜日

Blogger APIを利用してエントリを投稿する

Google Bloggerにエントリを投稿するツールを作っていました。この辺からGData関連のライブラリをダウンロードして使います。正式なドキュメントはBlogger APIにあります。

まず、投稿するエントリを作成する部分。

String CATEGORY_SCHEME = "http://www.blogger.com/atom/ns#";
String title = ...; // 投稿タイトル
String content = ...; // 内容 (HTML)
List<String> tags = ...; // タグ

Entry entry = new Entry();
entry.setTitle(new PlainTextConstruct(title));
entry.setContent(new HtmlTextConstruct(content));
for (String tag : tags) {
    entry.getCategories().add(new Category(CATEGORY_SCHEME, tag));
}

AuthSubで認証してエントリを投稿する部分。他にも認証形式はいくつかありますが、身内で使うツールだったらこれくらいでよいかと思います。

// 投稿画面のURLにblogID=... と書いてある数字
String blogId = ...;
// 投稿ツールのID
String toolId = "<company>-<tool>-<version>";
String user = ...; // ユーザ名
String password = ...; // パスワード

BloggerService service = new BloggerService(toolId);
service.useSsl();
service.setUserCredentials(
    user,
    password,
    ClientLoginAccountType.GOOGLE);
URL postUrl = new URL("http://www.blogger.com/feeds/" +
        blogId +
        "/posts/default");
Entry post = service.insert(postUrl, entry);

// 投降したエントリのURL
String result = post.getHtmlLink().getHref();

一点はまったのが、setUserCredentialsで"ClientLoginAccountType.GOOGLE"を指定する部分でした。 Google Appsと同じメールアドレスでGoogleアカウントを持っていると、通常では認証がGoogle Appsの方で行われてしまいます。 これを指定するとGoogle Appsでの認証を行わないので、普通に運用しているbloggerだったらこれを指定しておく方が無難です。

0 件のコメント:

コメントを投稿