2016-12-01 3 views
0

私は、ユーザーがv2 APIを使用してOutlookのカレンダーとシステム内のカレンダーを同期できるウェブサイトを用意しています。Outlook APIコンソールアプリケーションでリフレッシュトークンを使用する

ユーザーがウェブアプリケーションのボタンをクリックして更新トークンを受け取ってデータベースに保存すると、すべてうまくいきます。

私たちは、ユーザーがボタンをクリックする必要がないように定期的に実行するように設定されたコンソールアプリケーションを持っています。

いつでも私は応答を待つAPIを呼び出すときに、コンソールアプリケーションはただちに終了します。

以下は、ユーザーの予定表からイベントを取得するためのコードです。アプリケーションは「暗い応答」の行で終了します。

Public Shared Async Function FetchEventList(CalendarID As String, StartDate As String, EndDate As String, Token As String) As Task(Of EventListResponse) 
     Dim EventResposne = New EventListResponse() 
     Try 
      Dim data As String = Token 
      Dim baseUri As String = Convert.ToString("https://outlook.office.com/api/v2.0/me/calendars/") & CalendarID & "/calendarview?startDateTime=" & StartDate & "&endDateTime=" & EndDate 

      Dim client = New HttpClient() 
      client.DefaultRequestHeaders.Authorization = New System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", Convert.ToString("=") & data) 

      Dim response = Await client.GetAsync(baseUri) 
      Dim result = Await response.Content.ReadAsStringAsync() 
      EventResposne = Newtonsoft.Json.JsonConvert.DeserializeObject(Of EventListResponse)(result) 
     Catch ex As Exception 
     End Try 
     Return EventResposne 
    End Function 

何が紛失していますか?どのように修正できますか?

ご協力いただければ幸いです。

答えて

0

コンソールアプリケーションで作業していないことが問題であることが判明しました。代わりに結果を呼び出すように変更すると正しく動作します。

だから、このコードは動作します:

Public Shared Function FetchEventList(CalendarID As String, StartDate As String, EndDate As String, Token As String) As EventListResponse 
     Dim EventResposne = New EventListResponse() 
     Try 
      Dim data As String = Token 
      Dim baseUri As String = Convert.ToString("https://outlook.office.com/api/v2.0/me/calendars/") & CalendarID & "/calendarview?startDateTime=" & StartDate & "&endDateTime=" & EndDate 

      Dim client = New HttpClient() 
      client.DefaultRequestHeaders.Authorization = New System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", Convert.ToString("=") & data) 

      Dim response = client.GetAsync(baseUri).Result 
      Dim result = response.Content.ReadAsStringAsync().Result 
      EventResposne = Newtonsoft.Json.JsonConvert.DeserializeObject(Of EventListResponse)(result) 
     Catch ex As Exception 
     End Try 
     Return EventResposne 
    End Function 
関連する問題