SkyDrive へ移動( VS2012 用テンプレート ) VS2010 では動作しませんでした。 SkyDrive でアプリを作成して、クライアント ID を取得して使用します。 Form1.cs
using Microsoft.Live; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public LiveAuthClient auth; public LiveConnectClient lcc = null; private CancellationTokenSource ctsUpload = new CancellationTokenSource(); public Form1() { InitializeComponent(); } // ログイン結果より、セッションを作成 private async void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e) { // リダイレクトされた URL の処理 string url = e.Url.ToString(); string[] param = url.Split(new string[] { "=", "&" }, StringSplitOptions.None); Debug.WriteLine(param); // ( テスト的な方法 ) // リダイレクトされた結果の中で、必要な情報が含まれる処理を対象とする if (param[2] == "lc") { Debug.WriteLine(auth.Session); var target = await auth.ExchangeAuthCodeAsync(param[1]); Debug.WriteLine(auth.Session); // セッションの作成 lcc = new LiveConnectClient(target); // テスト的な情報表示 Debug.WriteLine(lcc.Session); var Result = await lcc.GetAsync("me/skydrive/files"); Debug.WriteLine(Result.RawResult); // アップロード用の参照ボタンを有効にする this.button2.Enabled = true; } } // ログイン処理をブラウザ内で行う private void button1_Click(object sender, EventArgs e) { auth = new LiveAuthClient("クライアント ID"); // auth.IntializeAsync(); string url = auth.GetLoginUrl(new string[] { "wl.signin", "wl.basic", "wl.skydrive_update" }); Debug.WriteLine(url); // WebBrowser でログイン画面を表示 this.webBrowser1.Navigate(url); } // ファイルを参照してアップロード private async void button2_Click(object sender, EventArgs e) { this.openFileDialog1.Filter = "すべて|*.*"; this.openFileDialog1.FilterIndex = 0; DialogResult dr = this.openFileDialog1.ShowDialog(); if (dr == System.Windows.Forms.DialogResult.OK) { // 中止ボタンを有効にする this.button3.Enabled = true; // 選択されたファイルのパス string FileName = Path.GetFileName(openFileDialog1.FileName); Debug.WriteLine(openFileDialog1.FileName + "をアップロードします"); // トークンにキャンセル直後の処理を登録 ctsUpload.Token.Register(() => { Debug.WriteLine("キャンセルされました"); }); // 経過処理用プライベートクラス ProgressUpload pu = new ProgressUpload(); // アップロードが正常終了した時の戻り値 LiveOperationResult Result = null; // キャンセルすると、WebException が発生 try { Result = await lcc.UploadAsync( "me/skydrive", FileName, File.OpenRead(openFileDialog1.FileName), OverwriteOption.Overwrite, ctsUpload.Token, pu ); } catch (Exception ex) { Debug.WriteLine(ex.Message); } // トークンより、キャンセルを判断 if (ctsUpload.Token.IsCancellationRequested) { MessageBox.Show("アップロードはキャンセルされました"); } else { // 正常終了 Debug.WriteLine(Result.RawResult); MessageBox.Show("アップロードしました"); } } } // 経過処理用のクラス private class ProgressUpload : IProgress<LiveOperationProgress> { public void Report(LiveOperationProgress value) { Debug.WriteLine(value.ProgressPercentage); } } // キャンセル private void button3_Click(object sender, EventArgs e) { ctsUpload.Cancel(); } } }
関連する記事 わりと簡単に作れるので、SkyDrive の運用はアプリケーションを作ると便利になると思います。Windows ストアの場合はもっと統合されているのですが、現状では落ちるので使えません。Windows8 ストアアプリは、年額4900円を払って登録しないと専用の API は使用できません。Live SDK v5.4 : VS2010 + Windows Phone / 画像アップロード
|
【VS(C#)の最新記事】
- Replit : cs-list
- C# : Excel の新しいブックのデフォルトのシートのセルに直接値をセットして、オートフィルを Range オブジェクトから実行する
- C#( Form ) : ウインドウ枠の無い吹き出しの作成
- C# のタプル( Visual Studio 2017 でテスト )
- C# : インターネット上の JSON ファイルのフォーマットを クラスとして定義して1行でオブジェクト化して使用する
- C# の文法的文字列処理
- C# : System.Data.Odbc によるデータベースのテーブルからのデータ取得処理( サンプルの SQL は MySQL 用です )
- C# : Excel を データベースとして DataGridView に読み込む
- C# : dynamic 型 による Excel へのアクセス
- C# : フォームを表示せずに、通知領域にアイコンを表示させる常駐プログラム
- Microsoft Access に対してSQLを入力してその結果を DataGridView に表示する最も簡単なコード
- C# : System.Data.Odbc データ取得(SELECT)処理( MySQL ) : ※ using 無し( Dispose 実行 )
- C# : SQL 文を外部テキストにして、String.Format でデータ部分を置き換えて利用する
- C# コンソールアプリを AN HTTPD で実行
- C# : SQLServer( SQLExpress ) の SMO を使用してテーブルの CREATE TABLE 文 を取得する
- C# : DataGridView に TKMP.DLL の IMAP(POP3) で受信したメールを非同期に表示する( 添付ファイルも取得 )
- C# : TKMP.DLLを使った、メール送信テンプレート
- C# と VB.net : TKMP.DLL を使って IMAP でメール本文の一覧を取得する( コンソール )
- C# でDataTable と DataSource を使用して、DataGridView にデータを表示するテンプレート( 行をダブルクリックしてダイアログを表示して行データを処理 )
- (C#) / VS2010 または VS2012 : TKMP.DLL(3.1.2 または 3.1.8)を使った、『さくらインターネット』用メール送信テンプレート