本記事の対象APIは既にサポートされていません。記事は参考程度にご利用ください。
はじめに
前回予告したとおり,今回は実際にWebアプリケーションを作りながらApplication Based Storage APIを利用したユーザーデータへのアクセス方法をみていきます。本連載第14回のWindows Live委任認証から内容が続いていますので併せて参照してください。
作成するWebアプリケーション
作成するWebアプリケーション(Webサイト)は,図1のようなユーザーデータへのアクセスをGUI化した低機能なエクスプローラのような,単純なものを作ってみようと思います。
アプリケーションは以下のように操作するものとします。
フォルダをクリックするとそのフォルダ直下のフォルダとファイルを表示
ファイルをクリックするとそのファイルを表示
Folder欄にフォルダ名を入力した状態でCreateボタンをクリックすると,チェックしているフォルダ直下にフォルダを作成
同様にRenameボタンをクリックした場合はチェックしているフォルダの名前を変更
File欄にファイルを入力した状態でUploadボタンをクリックすると,チェックしたフォルダ直下にそのファイルをアップロード
「Delete a Folder or File」ボタンをクリックするとチェックしているフォルダまたはファイルを削除
少し使いづらいものになっていますが,ユーザーデータに対して基本のアクセス操作が一通り可能です。また,最初に承認トークンを得るために承認要求ページへのリンクを示すものとします。
開発環境
今回の開発には,Visual Web Developer 2008 Express Editionを使用します。言語はVB.NETで記述しています。Application Based Storage APIの利用にはXMLの操作が必須となりVisual Basic 9.0の得意とするところですが,C#にも読み替えやすいように9.0の機能は使用せず,サーバ環境も考慮してASP.NET2.0で動作する内容になっています。Application Based Storage APIは言語に依存するものではないので,この環境・言語が必要というわけではありません。
また,開発にはWindows Liveサービスから開発PCへアクセスできる必要があり,URLドメインが必要になります。ダイナミックDNSの利用やhostsファイルを編集して対応するとよいでしょう。このことについては本連載の第11回の「開発環境」にて少し述べています。
Webサイトの作成
さっそく作成に取りかかりましょう。まずは適当な名前でWebサイトを新規作成します(図2)。
デフォルトのページにコントロールを配置します。formタグ以下のソースコードは次のようになります。図3のデザイナ画面も参考にして配置してください。このアプリケーションではTreeViewコントロールを使用してフォルダの階層を表し,フォルダやファイルの名前を表示します。
<form id="form1" runat="server">
<div>
<asp:HyperLink ID="ConsentHyperLink" runat="server" Visible="False">Request Consent</asp:HyperLink>
</div>
<asp:Panel ID="ResoucePanel" runat="server">
<asp:TreeView ID="ResourceTreeView" runat="server"></asp:TreeView>
<hr />
<div>
Folder: <asp:TextBox ID="FolderNameTextBox" runat="server"></asp:TextBox>
<asp:Button ID="CreateButton" runat="server" Text="Create" />
<asp:Button ID="RenameButton" runat="server" Text="Rename" />
<br />
File: <asp:FileUpload ID="FileUpload" runat="server" />
<asp:Button ID="UploadButton" runat="server" Text="Upload" />
<br />
<asp:Button ID="DeleteButton" runat="server" Text="Delete a Folder or File" />
</div>
<div>
<asp:Literal ID="MessageLiteral" runat="server"></asp:Literal>
</div>
</asp:Panel>
</form>

