Пока у меня это есть.Office 365 Rest 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 Connected Service, у кого-нибудь еще столкнулись с аналогичным вопросы?
Спасибо, Джейсон. Я использовал ваш учебник, чтобы получить токен auth, но теперь я получаю исключение с пустой ссылкой из mscorlib.dll – Frank
Спасибо Джейсону за учебник! Я получил его работу с унифицированным API O365 :) Теперь я его интегрировал с моим приложением MVC, наконец! –