2016-09-28 18 views
0

Microsoft Graph APIを使用してOffice 365の受信トレイを監視するwebhookプロジェクトを作成しました。私はマニュアルに従ってとして3日間のためにそれを更新UpdateSubscriptionアクションメソッドがhttps://graph.microsoft.io/en-us/docs/api-reference/v1.0/resources/subscription以下Microsoft Graph APIサブスクリプションへの自動更新

に提供作ら

はI'amは、サブスクリプション

を更新するためのHTTPリクエストを促進する方法のコードスニペットです
 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) 
     }; 

ユーザーがボタンを押して「更新」せずに自動更新する方法はありますか?

認証ヘッダーには、ユーザーがOffice365アカウントにサインインする必要があるAuthResult.accessTokenが必要なためです。

+0

次のGetAccessTokenFromRefreshTokenAsyncメソッドを使用してアクセストークンを取得するために使用されるHttpRuntimeCacheから 'RefreshToken'を取得することによって、ユーザーのサブスクリプションを更新できました。しかし、アプリケーションを再起動すると、キャッシュは 'RefreshToken'を持ちません。これをデータベースに保存するのは安全ですか? –

答えて

1

使用可能なオプションは、サービスまたはデーモンアプローチ(https://graph.microsoft.io/en-us/docs/authorization/app_only)でアドバイスしてください。ログインしたユーザーで認証する代わりに、Azure ADのCLIENT_SECRETによって生成されたベアラトークンを使用して、アプリケーションレベルでサブスクリプションを更新することができます。

私はデータベースにトークンを格納するのが正しいアプローチではないと思います。私の理解では、セキュリティトークンは決してデータベースには適していないということです。

実際には、あなたが言及していないプログラムの部分がない限り、私はここですべてのユーザーがログインする必要性を理解していません。私が言及したようなサービスは、ユーザがそこにいなくてもメールボックスを監視することができます。あるいは、プログラムがユーザにそこにいることを要求するなら、失われた信任状の問題は本当にありません。

0

enter image description hereこのアプローチを使用して、grant_typeにパスワードを使用してazureからaccesstokenを取得できます。下のスクリーンショットを見つけてください。

関連する問題