【问题标题】:How to get OAuth refresh token for use with EWS如何获取用于 EWS 的 OAuth 刷新令牌
【发布时间】:2021-03-26 06:47:16
【问题描述】:

我可以将 OAuth 令牌与 EWS 托管 API 一起使用,但一旦令牌过期,我必须获得一个新令牌。每次令牌过期时都会提示一些客户。

我将 AcquireTokenSilent 和 AcquireTokenByIntegratedWindowsAuth 与 AcquireTokenInteractive 一起使用作为失败。在内部进行测试时,对于大多数客户,AcquireTokenByIntegratedWindowsAuth 在没有提示的情况下为我提供了一个新令牌,但有些客户仍然每次都点击 AcquireTokenInteractive。如果刷新令牌不是一个选项,是否存在阻止某些用户使用 AcquireTokenByIntegratedWindowsAuth 调用的 Azure Active Directory 设置?

try {
    var t = accounts.Any()
        ? System.Threading.Tasks.Task.Run(() => pca.AcquireTokenSilent(ewsScopes, accounts.First()).ExecuteAsync())
        : System.Threading.Tasks.Task.Run(() => pca.AcquireTokenByIntegratedWindowsAuth(ewsScopes).ExecuteAsync());

    t.Wait();
    token = t.Result;
} catch (Exception ex) {
    var t = System.Threading.Tasks.Task.Run(() => pca.AcquireTokenInteractive(ewsScopes).ExecuteAsync());
    t.Wait();

    token = t.Result;
}

【问题讨论】:

    标签: oauth-2.0 azure-active-directory office365 exchangewebservices


    【解决方案1】:

    请确保异常是 MsalUiRequiredException 类型

    每次静默令牌身份验证失败时,都会引发 MsalUiRequiredException,因此您知道由于某种原因无法以静默方式更新令牌(例如,刷新期已过、密码已更改等)。

    也许您会收到不同类型的异常...

    【讨论】:

      猜你喜欢
      • 2019-05-02
      • 2021-01-18
      • 2013-09-05
      • 2012-04-18
      • 2015-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-15
      相关资源
      最近更新 更多