2016-12-01 4 views
0

Ich habe eine Website, die es einem Benutzer ermöglicht, seinen Kalender in unserem System mit dem Outlook-Kalender mithilfe der API v2 zu synchronisieren.Outlook API Verwenden von Refresh-Token in der Konsolenanwendung

Alles funktioniert gut, wenn der Benutzer auf eine Schaltfläche in unserer Webanwendung klickt, erhalten wir das Aktualisierungstoken und speichern es in unserer Datenbank.

Wir haben eine Konsolenanwendung, die so konfiguriert ist, dass sie regelmäßig ausgeführt wird, um für die Benutzer zu synchronisieren, sodass sie nicht auf die Schaltfläche klicken müssen.

Wenn ich versuche, die API jederzeit aufzurufen, warte ich die Antwort ab, die Konsolenanwendung wird sofort geschlossen.

Unten ist der Code zum Abrufen der Ereignisse aus dem Kalender des Benutzers. Die Anwendung wird in der Zeile "Dim Response" geschlossen.

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 

Was fehlt mir und wie kann ich es beheben?

Jede Hilfe wäre willkommen.

Antwort

0

Es stellt sich heraus, das Problem war mit der warten nicht auf der Konsole App arbeiten. Das Ändern in das Anrufergebnis funktioniert stattdessen korrekt.

Also dieser Code funktioniert:

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 
Verwandte Themen