0
到目前爲止,我有這個。辦公室365休息Api有問題獲取訪問令牌
public static async Task<OutlookServicesClient> CreateOutlookClientAsync(string capability)
{
try
{
string authority = CommonAuthority;
// Create an AuthenticationContext using this authority.
_authenticationContext = new AuthenticationContext(authority);
//See the Discovery Service Sample (https://github.com/OfficeDev/Office365-Discovery-Service-Sample)
//for an approach that improves performance by storing the discovery service information in a cache.
DiscoveryClient discoveryClient = new DiscoveryClient(
async() => await GetTokenHelperAsync(_authenticationContext, DiscoveryResourceId));
// Get the specified capability ("Contacts").
CapabilityDiscoveryResult result =
await discoveryClient.DiscoverCapabilityAsync(capability);
var client = new OutlookServicesClient(
result.ServiceEndpointUri,
async() =>
await GetTokenHelperAsync(_authenticationContext, result.ServiceResourceId));
return client;
}
catch (Exception e)
{
Console.WriteLine(e.Message);
if (_authenticationContext != null && _authenticationContext.TokenCache != null)
_authenticationContext.TokenCache.Clear();
return null;
}
}
}
private static async Task<string> GetTokenHelperAsync(AuthenticationContext context, string resourceId)
{
string accessToken = null;
AuthenticationResult result = null;
string myId = WebConfigurationManager.AppSettings["ida:ClientID"];
string myKey = WebConfigurationManager.AppSettings["ida:Password"];
ClientCredential client = new ClientCredential(myId,myKey);
result = await context.AcquireTokenAsync(resourceId, client);
//result =context.AcquireToken(resourceId, ClientID,_returnUri);
accessToken = result.AccessToken;
return accessToken;
}
,當我到達導致兩件事情發生,如果我的用戶AcquireTokenAsync我得到一個錯誤,說明與標識XXXX應用程序目錄未找到api.office.com否則,如果我運行AcquireToken我得到登錄模式彈出,但發生錯誤指示請求必須包含client_secret。
我不知道如何解決這個問題我懷疑它可能與實際的應用程序配置有關我已經嘗試在Azure AD中創建我自己的應用程序並使用VS連接服務,有任何其他人遇到類似問題是什麼?
謝謝傑森。我用你的教程來獲得一個認證令牌,但現在我得到一個空引用異常來自mscorlib.dll – Frank
感謝傑森的教程!我使用了O365 Unified API :)現在我已經將它與我的MVC應用程序集成在一起了! –