▼ 実行画面 ログイン > 画像表示 > 画像投稿 ( WEB カメラの画像も投稿できます ) SkyDrive へ移動 実行するには、Facebook での APIキーが必要になります。MainPage.xaml.cs の先頭に 『public String apiKey = "";』とありますので変更して下さい。 先にログインしてアクセストークンを取得する必要がありますが、サンプルコードに実装してあります。この処理で取得するのは2時間使用可能なアクセストークンになります。60日間に変更するには、手動でも可能なのでこちらを参考にして下さい(一旦60日に変更すると、この処理で取得しても60日になるようです)。 ファイルのアップロードは、通常の仕様通りですが、具体的なフォーマットをソースコードで知りたい場合は、『Windows Phone から Facebook に画像アップロード』を参照するか、実行時にローカルのWEBサーバーに対して実行してダンプしてみて下さい。AN HTTPD ならば、トレースログを有効にすると見る事ができます。 ファイルのアップロードには、画像データのバイト配列が必要になりますが、その読み込み部分もサンプルに実装されています。具体的には、StorageFile から IBuffer を作成して、 CryptographicBuffer.CopyToByteArray メソッドを実行するのが最も簡単です( 他にも方法はあります ) HTTP の仕様(マルチパートを使用する方法)に合わせてデータを作る方法としては、System.Net.Http(HttpClient の名前空間)に全て用意されていました。仕様をご存じな方であれば非常に簡単に実装できる事がお解りになると思います。 これらの処理は全て本来非同期ですが、Windows8 の非同期処理の実装方法によってイベント等を記述する必要がなくなっています。この実装の概要に関しては、『Windows8 の非同期処理(C#)』を参照して下さい。
try { HttpClient httpClient = new HttpClient(); httpClient.MaxResponseContentBufferSize = int.MaxValue; httpClient.DefaultRequestHeaders.ExpectContinue = false; MultipartFormDataContent form = new MultipartFormDataContent(); StringContent sc = new StringContent(PostBody.Text); sc.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("post-data"); sc.Headers.ContentDisposition.Name = "message"; form.Add(sc, "message"); var fileContent = new System.Net.Http.ByteArrayContent(data); fileContent.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("form-data"); fileContent.Headers.ContentDisposition.FileName = "imagefile.jpg"; fileContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("image/jpeg"); fileContent.Headers.ContentDisposition.Name = "source"; form.Add(fileContent, "source"); HttpResponseMessage response = await httpClient.PostAsync(api_base_url+"me/photos?access_token=" + accessToken, form); String text = await response.Content.ReadAsStringAsync(); Debug.WriteLine(text); MessageDialog msg = new MessageDialog("投稿が終了しました"); msg.Commands.Add(new UICommand( "確認", new UICommandInvokedHandler(this.CommandInvokedHandler))); // Set the command that will be invoked by default msg.DefaultCommandIndex = 0; // Set the command to be invoked when escape is pressed msg.CancelCommandIndex = 1; // ダイアログ表示 await msg.ShowAsync(); } catch (Exception Err) { throw; }
参考 Uploading a file with Windows 8 WinRT - How-To: Use the Graph API to Upload Photos to a user’s profile - Facebook開発者 関連する記事 Windows Phone から Facebook に画像アップロード HTML(ローカル) を使用して Facebook へ画像をアップロードする 手動で Facebook API の 60日間の アクセストークンを取得する
|
【Win8 ストアアプリの最新記事】
- C# : HttpClient で Post と Get する汎用 static クラス
- Win8.1 ストアアプリ(JS) : Visual Studio 2013 で Three.js(v65) の WebGLRenderer の動作を確認しました
- WinJS ストア : Three.js を組み込んで、『画像を飛ばす』テンプレート( Bird.js を利用 )
- WinJS ストア : 『背景画像をチェンジする2画面アプリ』のテンプレート
- VS2012ストア(C#) : WebView テンプレート
- VS2012(C#)ストア : ListView Twitter 検索テンプレート
- イラストを背景にして2ページの画面遷移を解りやすくした Windows Store テンプレート
- Twitter API の自分のアプリのトークンを使って投稿するだけの class VS2012_Twitter
- Win8 ストア(C#) / PDF viewer sample (Windows 8.1)
- ストアアプリの TextBox のスクロールバー
- Win8 ストアアプリの、メモリ上にページを残す画面遷移と、前画面のコントロールの参照
- Win8 ストアアプリで、『選択肢を応答するダイアログ』を簡単に使うための MessageBox クラス
- Win8 ストアから Post 投稿
- Win8ストア XAML の AppBarButtonStyle のContent に指定する 16進数 Unicode の取得
- Win8 ストア : UrlEncode と UrlDecode
- Win8 ストア : HttpClient + XDocument で RSS の取得
- Win8 ストア : リストボックス テンプレート
- Win8 ストア : ファイルアクセス テンプレート
- Win8 ストア : ストアブランク テンプレート
- AppBar テンプレート / Win8 ストアアプリ(C#)