使ってみよう! Windows Live SDK/API

第41回 Live Spaces API/SDK(3)

この記事を読むのに必要な時間:およそ 6 分

はじめに

前回はWindows Live IDアカウントによる認証を利用して,ブログの記事編集などの操作をLive Spaces MetaWeblog APIで行いました。今回も引き続いてブログの操作と情報の取得を行います。

第39回40回では,以下のAPIを利用したブログの操作を紹介しています。

  • 記事の投稿
  • カテゴリーの取得
  • 最近の記事一覧の取得
  • 指定した記事の取得
  • 記事の編集

今回は残りの提供されている内容として次の操作を紹介します。

  • 記事の削除
  • ユーザーのLive Spacesに関する情報の取得
  • ユーザー情報の取得

記事の削除

まずLive Spaces MetaWeblog APIによる記事の削除です。Live Spaces MetaWeblog APIは第39回Windows Live IDアカウントによる認証方法は第40回で紹介していますので,そちらを参照してください。

記事の削除は,blogger.deletePostメソッドを使います。これまでのメソッド名と違い,metaWeblogに代わりbloggerという単語がメソッドに含まれています。MetaWeblog APIは39回で少し触れているようにBlogger APIを拡張したものです。この記事の削除はBlogger APIで定義されているものになります。

メソッドのパラメーターは次の通りです。

Appkey Live Spacesでは無視されます
Posted 削除する記事のID
Username ユーザー名
Password パスワード
Publish 無視されます(0または1の値を指定)

appkeyとpublishはLive Spacesでは無視されますが,要求時に送信するXML文書内には上記パラメーターすべてを指定する必要があります。記事IDは,記事の投稿時や,最近の記事一覧取得によって取得できる記事のIDを指定します。ユーザー名は,Live SpaceのURLに含まれる文字列(http://***.spaces.live.com の***の値)です。パスワードは,Live IDアカウントによる認証を利用する場合は空白です。

戻り値は,エラー以外の場合,常に下記のtrueを示すXML文書が返ります。

<methodResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <params>
    <param>
      <value>
        <boolean>1</boolean>
      </value>
    </param>
  </params>
</methodResponse>

実際の記事を削除するメソッドのコードは次のようになります。パラメーターのblogidとusernameを引数に渡して使います。

Sub DeletePost(ByVal blogId As String, ByVal userName As String)
    ' パラメーター
    Dim password = "" ' 秘密のキーワード (Live ID アカウントによる認証では使用しません)

    ' 要求時に送信するXML
    Dim requestXml =
        <?xml version="1.0" encoding="utf-8"?>
        <methodCall>
            <methodName>blogger.deletePost</methodName>
            <params>
                <param><value><string></string></value></param>
                <param><value><string><%= blogId %></string></value></param>
                <param><value><string><%= userName %></string></value></param>
                <param><value><string><%= password %></string></value></param>
                <param><value><boolean>1</boolean></value></param>
            </params>
        </methodCall>

    ' 応答の受信
    Dim doc = GetResponse(requestXml)
End Sub

コード中のGetResponseメソッドは第40回で作成しています。そちらのコードを参照してください。GetResponseメソッドではMetaWeblog APIによるLiveサービスにアクセスして結果を取得する一連の処理を行っています。

以上で,ブログの記事の新規投稿や特定記事の取得,編集,削除とブログ記事に関する操作すべてを紹介したことになります。

ユーザーのLive Spacesに関する情報の取得

次はLive Spacesに関する情報の取得です。これにはblogger.getUsersBlogsメソッドを使用します。このメソッドは指定したユーザーが投稿可能なブログ一覧を返すものですが,Live Spacesではユーザーはひとつのブログしか持てませんので,実質的にはユーザーのLive Spacesのブログ名を取得するのに利用できます。

必要なパラメーターは次の通りです。

appkey Live Spacesでは無視されます
username ユーザー名
password パスワード

戻り値は,ブログ情報を表す構造体の配列です。構造体は次の内容が含まれています。

url ユーザーのLive SpacesのURL
blogid Live Spacesの場合「MyBlog」の固定値
blogName ブログ名

上記の構造体の内容を含む,戻り値のXML文書は次のようになっています。

<methodResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <params>
    <param>
      <value>
        <array>
          <data>
            <value>
              <struct>
                <member>
                  <name>url</name>
                  <value>http://spaces.msn.com/members/***</value>
                </member>
                <member>
                  <name>blogid</name>
                  <value>MyBlog</value>
                </member>
                <member>
                  <name>blogName</name>
                  <value>***</value>
                </member>
              </struct>
            </value>
          </data>
        </array>
      </value>
    </param>
  </params>
</methodResponse>

上記のXML文書から必要な部分を参照してアプリケーションで使用します。ブログのURLはspcaes.msn.comドメインで,現在は通常使用されていないアドレスになっています(アクセスするとspaces.live.comドメインにリダイレクトされます)⁠URLはユーザー名から,http://ユーザー名.spaces.live.com となるため,blogger.getUsersBlogsメソッドから得られる情報はブログ名のみとなります。

情報を取得するコードは次のようになります。ユーザー名を引数で渡し,戻り値が構造体の内容がキー名と値のコレクションのメソッドとして記述しています。

Function GetUsersBlog(ByVal userName As String) As IDictionary(Of String, String)
    ' パラメーター
    Dim password = "" ' 秘密のキーワード (Live ID アカウントによる認証では使用しません)

    ' 要求時に送信するXML
    Dim requestXml =
        <?xml version="1.0" encoding="utf-8"?>
        <methodCall>
            <methodName>blogger.getUsersBlogs</methodName>
            <params>
                <param><value><string></string></value></param>
                <param><value><string><%= userName %></string></value></param>
                <param><value><string><%= password %></string></value></param>
            </params>
        </methodCall>

    ' 応答の受信
    Dim doc = GetResponse(requestXml)

    ' 構造体のキー名と値を取得
    Dim dic = New Dictionary(Of String, String)
    For Each el In doc...<member>
        dic.Add(el.<name>.Value, el.<value>.Value)
    Next

    Return dic
End Function

著者プロフィール

松江祐輔(まつえゆうすけ)

日本システムウエア株式会社 勤務。現在,ハードウェア設計・検証業務を担当。大学生・大学院生時代はベンチャー企業 有限会社ミレニアムシステムズにプログラマーとして従事。趣味はプログラミング。好きな言語はVisual Basic。Microsoft MVP for Windows Live Platform(Jul 2010 - Jun 2011),Windows Live(Jul 2011 - Jun 2013)。

URL:http://katamari.jp

コメント

コメントの記入