-1
尝试启动试图与Microsoft Outlook API联系的控制台应用程序时出现身份验证错误。我用控制台日志创建了这个应用程序,我将在这个问题中显示。似乎我试图默默地获取令牌时出现此错误,但从我看到的每个示例看来,似乎我都在正确地执行此操作。这些是我看到的两个功能导致的错误。使用509证书进行身份验证时未生成令牌
认证标记获取功能:
private static string EMAIL_SERVICE_ACCOUNT = "********@dell.com";
private static string EMAIL_SERVICE_PWD = "*******";
private static string ClientID = "************************";
private static string ClientSecret ="**********************";
private static Uri ReturnUri = new Uri("https://localhost:44300/");
private static string CommonAuthority = "https://login.windows.net/Common";
public static AuthenticationContext AuthContext { get; set; }
private static async Task<AuthenticationResult> AcquireTokenAsync(string authContextUrl, string resourceId)
{
AuthenticationResult ar = null;
try
{
AuthContext = new AuthenticationContext(authContextUrl);
if (AuthContext.TokenCache.ReadItems().Count() > 0)
{
string cachedAuthority =
AuthContext.TokenCache.ReadItems().First().Authority;
AuthContext = new AuthenticationContext(cachedAuthority);
}
//ClientCredential clientCredential = new ClientCredential(ClientID, ClientSecret); << not invoking this
ar = (await AuthContext.AcquireTokenSilentAsync(resourceId, ClientID));
}
catch (Exception e)
{
//not in cache; we'll get it with the full oauth flow
if (e.InnerException != null)
Console.WriteLine("Inner exception: {0}", e.InnerException);
}
if (ar == null)
{
try
{
UserCredential uc = new UserCredential(EMAIL_SERVICE_ACCOUNT, EMAIL_SERVICE_PWD);
ar = AuthContext .AcquireToken(resourceId, ClientID, uc);
}
catch (Exception acquireEx)
{
//utter failure here, we need let the user know we just can't do it
Console.WriteLine("Error trying to acquire authentication result: " + acquireEx.Message);
if (acquireEx.InnerException != null)
Console.WriteLine("Inner exception: {0}", acquireEx.InnerException);
}
}
return ar;
}
这是我的函数创建Outlook客户端
private static async Task<OutlookServicesClient> GetOutlookClient()
{
OutlookServicesClient oc = null;
try
{
string MAIL_RESOURCE_ID = "https://outlook.office365.com";
AuthenticationResult ar = await AcquireTokenAsync(CommonAuthority, MAIL_RESOURCE_ID);
if (ar != null)
{
oc = new OutlookServicesClient(new Uri("https://outlook.office365.com/api/v1.0"),() =>
Task.Run(() =>
{
return ar.AccessToken;
}));
}
}
catch (Exception ex)
{
Console.WriteLine("Error getting Outlook client: " + ex.Message);
if (ex.InnerException != null)
Console.WriteLine("Inner exception: {0}", ex.InnerException);
}
return oc;
}
这是我得到的错误
你得到了什么错误? –
@丹尼尔必须重新启动PC,现在已经发布错误 – EasyE