0

我已经使用 Microsoft Graph API 创建了 webhook 项目来监控 Office 365 收件箱。

根据https://graph.microsoft.io/en-us/docs/api-reference/v1.0/resources/subscription上提供的文档,我做了一个 UpdateSubscription 操作方法,仅将其更新 3 天

下面是我如何促进 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)
        };

有没有一种方法可以在用户不按“更新”按钮的情况下自动更新?

因为授权标头需要 AuthResult.accessToken 这将要求用户登录到 Office365 帐户。

请指教

4

2 回答 2

1

您可以使用服务或守护程序方法 ( https://graph.microsoft.io/en-us/docs/authorization/app_only )。您可以使用不记名令牌在应用程序级别更新订阅,而不是使用登录用户进行身份验证,该不记名令牌又由 Azure AD 的 CLIENT_SECRET 生成。

我不认为将令牌存储在数据库中是正确的方法。我的理解是安全令牌永远不适合数据库。

事实上,我完全不明白这里需要让用户登录,除非你没有提到程序的某些部分。我提到的服务可以在没有用户在场的情况下监控邮箱,或者如果程序要求用户在场,则确实不存在丢失凭据的问题。

于 2017-02-02T21:17:26.673 回答
0

在此处输入图像描述您可以使用此方法使用 grant_type 密码从 azure 获取访问令牌。请找到下面的屏幕截图。

于 2017-07-11T15:40:34.447 回答