2016-09-28 3 views
0

Ich habe Webhook-Projekt mit Microsoft Graph API erstellt, um Office 365-Posteingang zu überwachen.Automatisches Update für Microsoft Graph API-Abonnement

ich eine UpdateSubscription Aktionsmethode hergestellt, die als entsprechend der Dokumentation nur für 3 Tage erneuert bieten auf https://graph.microsoft.io/en-us/docs/api-reference/v1.0/resources/subscription

Unter dem Code-Snippet ist, wie Ich bin die HTTP-Anforderung erleichtern das Abonnement

zu aktualisieren
 AuthenticationResult authResult = await AuthHelper.GetAccessTokenAsync(); 

     HttpClient client = new HttpClient(); 
     client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", authResult.AccessToken); 
     client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 

     // Build the request. 
     string subscriptionsEndpoint = "https://graph.microsoft.com/v1.0/subscriptions/"+id; 
     var method = new HttpMethod("PATCH"); 

     HttpRequestMessage request = new HttpRequestMessage(method, subscriptionsEndpoint); 

     //get the current time 

     var subscription = new Subscription 
     { 
      //Id = id, 
      ExpirationDateTime = DateTime.UtcNow + new TimeSpan(0, 0, 4230, 0) 
     }; 

Gibt es eine Möglichkeit, automatisch zu aktualisieren, ohne dass der Benutzer die Taste zum "Aktualisieren" drückt?

Da die Authorization-Header AuthResult.accessToken erfordern, muss der Benutzer sich im Office365-Konto anmelden.

Bitte Rat

+0

Ich konnte die Subskription des Benutzers aktualisieren, indem ich das 'RefreshToken' von dem HttpRuntimeCache abruft, das verwandt wird, um das Zugriffstoken zu erhalten, das die folgende Methode verwendet GetAccessTokenFromRefreshTokenAsync. Beim Ausführen eines App-Neustarts hat der Cache jedoch nicht den 'RefreshToken'. Ist es sicher, dies in einer Datenbank zu speichern? –

Antwort

1

Eine Option zur Verfügung, um Ihnen den Service oder Daemon Ansatz (https://graph.microsoft.io/en-us/docs/authorization/app_only). Anstatt sich mit einem angemeldeten Benutzer zu authentifizieren, können Sie das Abonnement auf Anwendungsebene mithilfe eines Bearer-Tokens erneuern, das wiederum von CLIENT_SECRET von Azure AD generiert wird.

Ich denke nicht, Tokens in der Datenbank zu speichern ist der richtige Ansatz hier. Ich verstehe, dass Sicherheitstoken niemals für eine Datenbank geeignet sind.

In der Tat verstehe ich nicht ganz die Notwendigkeit, den Benutzer hier einloggen zu müssen, es sei denn, es gibt Teile des Programms, die Sie nicht erwähnt haben. Ein Dienst wie der oben erwähnte kann ein Postfach überwachen, ohne dass ein Benutzer dort ist, oder, wenn das Programm erfordert, dass der Benutzer dort ist, gibt es wirklich kein Problem mit verlorenen Anmeldeinformationen.

0

enter image description here Sie können diese Methode verwenden, um accesstoken von azure mithilfe von grant_type ein Kennwort abzurufen. Bitte finden Sie den folgenden Screenshot.

Verwandte Themen