TwitterとFacebookへの同時投稿を行う(後編)

次にソリューションエクスプローラー内のFacebookInfoPage.xamlを展開して表示される、FacebookInfoPage.xaml.vbをダブルクリックしてリスト4のコードを記述します。
ロジックコードを記述する
リスト4 (FacebookInfoPage.xaml.vb)
Option Strict On Imports Facebook
MessageDialogを表示するのに必要なWindows.UI.Popups名前空間をインポートします。
Imports Windows.UI.Popups Public NotInheritable Class FacebookInfoPage Inherits Page Dim myText As String Dim flag As Boolean
ページがアクティブになった時の処理
FacebookLoginPage.xamlから送られた「投稿内容」を取得して、メンバ変数myTextに格納します。
モジュール内で宣言したPublic変数accessTokenで初期化された新しいFacebookClientのインスタンスを作成します。
AddHandlerメソッドでFacebookへのPOSTが完了した時に発生する、PostCompletedイベントにイベントハンドラを指定します。イベントハンドラ内では以下の処理を行います。
エラーが発生した場合には「アップロード失敗」のメッセージダイアログを表示します。
	ブール型メンバ変数flagをFalseで初期化します。
	それ以外はflagをTrueで初期化します。
キーと値のコレクションを表す、Dictionaryクラスのインスタンス、myParamオブジェクトを作成します。
	myParamの”message”に投稿内容を格納しているメンバ変数myTextを指定します。
PostTaskAsyncメソッドで、パスに "/me/feed"、パラメーターにmyParamを指定して、Facebookサーバーに非同期処理のPOSTリクエストを送信します。
ブール型メンバ変数flagがTrueなら「TwitterとFacebookに投稿しました。」と表示します。
非同期処理で行われるため、メソッドの先頭にAsyncを追加します。Asyncが追加されていると、その処理が非同期で行われることを意味します。
  Protected Overrides Async Sub OnNavigatedTo(e As Navigation.NavigationEventArgs)
    myText = CStr(e.Parameter)
    myFB = New FacebookClient(accessToken)
    AddHandlermyFB.PostCompleted, Async Sub(mySender As Object, myArgs As FacebookApiEventArgs)
                   If myArgs.Error Is Nothing = False Then
                       Dim myDialog As MessageDialog = New MessageDialog("アップロード失敗")
  
                       Await myDialog.ShowAsync()
                       flag = False
                     Else
                      flag = True
                     End If
                   End Sub
    Dim myParam As New Dictionary(Of String, Object)
    myParam("message") = myText
    Await myFB.PostTaskAsync("/me/feed", myParam)
 
    If flag = True Then
      messageTextBlock.Text = "TwitterとFacebookに投稿しました。"
    Else
      messageTextBlock.Text = "投稿失敗"
    End If
  End Sub
End Class
今回の応用編では、筆者の解像度1920×1080で作成したサンプルが多かったのですが、この方法は好ましい方法ではありません。
1920×1080を指定して作成すると、Windows 8のハードウエア認定を受けることのできる1366×768の解像度では画面が途切れてしまいます。
そこで筆者は下記のコードを使用して解像度を取得し、画面の表示を変更しています。
Dim myWidth = CInt(Window.Current.CoreWindow.Bounds.Width)
  Dim myHeight = CInt(Window.Current.CoreWindow.Bounds.Height)
  If myWidth = 1920 AndAlso myHeight = 1080 Then
    ~解像度が1920×1080の場合の画面の表示処理~
  ElseIf myWidth = 1366 AndAlso myHeight = 768 Then
    ~解像度が1366×768の場合の画面の表示処理
  End If
	上記のコードによって解像度による画面の表示サイズの変更を行います。皆さんも一度お試しください。
今回で、応用編は終わりです。基本編と応用編合わせていろいろなサンプルを見てきましたが、いかがだったでしょうか。この連載が、皆様のWindows ストアアプリ挑戦への足がかりになっていただければ、筆者としてはうれしい限りです。是非、挑戦していただきたいと思います。どうも、ありがとうございました。
薬師寺国安

