はじめに
前回はWindows Live IDアカウントによる認証を利用して、
第39回と40回では、
- 記事の投稿
- カテゴリーの取得
- 最近の記事一覧の取得
- 指定した記事の取得
- 記事の編集
今回は残りの提供されている内容として次の操作を紹介します。
- 記事の削除
- ユーザーのLive Spacesに関する情報の取得
- ユーザー情報の取得
記事の削除
まずLive Spaces MetaWeblog APIによる記事の削除です。Live Spaces MetaWeblog APIは第39回、
記事の削除は、
メソッドのパラメーターは次の通りです。
Appkey | Live Spacesでは無視されます |
---|---|
Posted | 削除する記事のID |
Username | ユーザー名 |
Password | パスワード |
Publish | 無視されます |
appkeyとpublishはLive Spacesでは無視されますが、
戻り値は、
<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.
必要なパラメーターは次の通りです。
appkey | Live Spacesでは無視されます |
---|---|
username | ユーザー名 |
password | パスワード |
戻り値は、
url | ユーザーのLive SpacesのURL |
---|---|
blogid | Live Spacesの場合 |
blogName | ブログ名 |
上記の構造体の内容を含む、
<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.
情報を取得するコードは次のようになります。ユーザー名を引数で渡し、
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
ユーザー情報の取得
紹介する最後のLive Spaces MetaWeblog APIのメソッドは、
appkey | Live Spacesでは無視されます |
---|---|
username | ユーザー名 |
password | パスワード |
戻り値は、
nickname | 不明 |
---|---|
userid | 不明 |
url | ユーザーのLive SpacesのURL |
公開メールアドレス | |
lastname | 名 |
firstname | 姓 |
以下に構造体の各値について説明します。
nicknameとuseridは、
urlのURLはユーザーのLive Spacesに関する情報を取得した時と同じようにspaces.
e-mailは、

lastnameとfirstnameは、

コードは次のようになります。ユーザーのLive Spacesに関する情報の取得と同様にユーザー名を引数に指定し、
Function GetUsersInfo(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.getUserInfo</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
以上でLive Spaces MetaWeblog APIで提供されているメソッドはすべて紹介したことになります。
MetaWeblog API エラー
APIのメソッド呼出し時に不正なパラメーターを指定したなど、
faultCode | エラーを示すコード |
---|---|
faultString | エラーメッセージ |
たとえば、
<methodResponse>
<fault>
<value>
<struct>
<member>
<name>faultCode</name>
<value>
<int>40003</int>
</value>
</member>
<member>
<name>faultString</name>
<value>
<string>Directory or File Does Not Exist</string>
</value>
</member>
</struct>
</value>
</fault>
</methodResponse>
これまで紹介したコードではエラー処理を省略していますが、
Live Spaces APIs and Feeds
最後にLive Spaces MetaWeblog以外の提供されているAPIについて少しふれておきます。適切なパラメーターを設定しLive SpacesのURLへアクセスすると引用などの操作ができます。それらはAPIとして提供されています。また、
ただし、
Live Spaces APIs
APIのうちのひとつを紹介します。ブログの新規投稿ページをあらかじめタイトルや引用文を設定した状態で開くためのBlogIt
http://spaces.live.com/BlogIt.aspx?Title=<タイトル>&Description=<本文>&SourceURL=<引用元のURL>
指定可能なパラメーターは次の通りです。値は、
Title | タイトル |
---|---|
Description | 本文 |
SourceURL | 引用元のURL |
たとえば、
http://spaces.live.com/BlogIt.aspx?Title=%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86%EF%BC%81+Windows+Live+SDK%2FAPI&Description=Live+Spaces+API%2FSDK&SourceURL=http://gihyo.jp/dev/serial/01/wl-sdk/0041

このAPIを利用すると、
RSSフィード
次に、
たとえば、
http://***.spaces.live.com/feed.rss
上記の *** 部分は、
フィードの公開は、

ブログ記事のみのフィードは次の書式になります。
http://***.spaces.live.com/blog/feed.rss
フォトアルバムのフィードは次の書式です。
http://***.spaces.live.com/photos/feed.rss
ユーザー情報のフィードもあります。
http://***.spaces.live.com/profile/feed.rss
このほかにもフィードはいろいろと提供されています。これらをMetaWeblog APIと組み合わせることで、
おわりに
今回はここまでです。3回に渡り、
また、