-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