C# MSAL为空的用户

C# MSAL为空的用户,c#,microsoft-graph-api,msal,onenote-api,C#,Microsoft Graph Api,Msal,Onenote Api,在多台机器上,我没有问题,但是在一台机器上(Win 10,x64),我得到以下错误: Null user was passed in AcquiretokenSilent API. Pass in a user object or call acquireToken authenticate. 该代码是基本的MSAL代码,我使用的是MSGraph API。程序“挂起”在以下行: authResult = await App.PublicClientApp.AcquireTokenAsync(s

在多台机器上,我没有问题,但是在一台机器上(Win 10,x64),我得到以下错误:

Null user was passed in AcquiretokenSilent API.
Pass in a user object or call acquireToken authenticate.
该代码是基本的MSAL代码,我使用的是MSGraph API。程序“挂起”在以下行:

authResult = await App.PublicClientApp.AcquireTokenAsync(scopes);
以下是完整的方法:

private async void SignInButton_Click(object sender, RoutedEventArgs e)
{
  // StatusMsg.Text = string.Empty;

  try
  {
    authResult = await App.PublicClientApp.AcquireTokenSilentAsync(scopes, App.PublicClientApp.Users.FirstOrDefault());
    StatusMsg.Text = "Success Logging In";
  }
  catch (MsalUiRequiredException ex)
  {
    // A MsalUiRequiredException happened on AcquireTokenSilentAsync. This indicates you need to call AcquireTokenAsync to acquire a token
    System.Diagnostics.Debug.WriteLine($"MsalUiRequiredException: {ex.Message}");

    try
    {
      authResult = await App.PublicClientApp.AcquireTokenAsync(scopes);
      StatusMsg.Text = "Success Logging In with Scopes";
    }
    catch (MsalException msalex)
    {
      StatusMsg.Text = $"Error Acquiring Token:{System.Environment.NewLine}{msalex}";
    }
  }
  catch (Exception ex)
  {
    StatusMsg.Text = $"Error Acquiring Token Silently:{System.Environment.NewLine}{ex}";
    return;
  }

  if (authResult != null)
  {
    StatusMsg.Text = "Signed In  ";
    StatusMsg.Text += $"Name: {authResult.User.Name}" + Environment.NewLine;
    StatusMsg.Text += $"Username: {authResult.User.DisplayableId}" + Environment.NewLine;
    StatusMsg.Text += $"Token Expires: {authResult.ExpiresOn.ToLocalTime()}" + Environment.NewLine;
    //StatusMsg.Text += "NotebookName/ID = " + Globals.CurentNotebookName.ToString() + " / " + Globals.CurrentNotebookId.ToString() + Environment.NewLine;
  }
}
这是我的授权和范围:

private AuthenticationResult authResult = null;
private string[] scopes = { "Notes.ReadWrite" };

代码似乎遵循使用MSAL获取令牌的标准准则。我想知道这是否与由于整个调用堆栈以任何方式偏离