C# MSAL为空的用户
在多台机器上,我没有问题,但是在一台机器上(Win 10,x64),我得到以下错误: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
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获取令牌的标准准则。我想知道这是否与由于整个调用堆栈以任何方式偏离