2016-03-11 2 views
0

Я создаю консольное приложение, которому необходимо получить доступ к данным в CRM Online 2016. Это будет выполняться как запланированное задание, а не интерактивно. Похоже, мне нужно использовать OAuth для аутентификации.Как выполнить аутентификацию в CRM Online с помощью неинтерактивного пользователя?

Я уже сделал следующее:

  • Я создал неинтерактивную пользователя в CRM с целью этой интеграции. - Я уже зарегистрировал свое приложение с Azure AD и получил идентификатор клиента.

Я не могу понять, как аутентифицировать веб-службы. Я привел к этой статье MSDN:

https://msdn.microsoft.com/en-us/library/gg327838.aspx

Он показывает, как проверить подлинность но пример он показывает вызывает окно всплывали запрос пользователя ввести пользователь/пароль. Это не сработает для меня, так как это приложение не будет запущено в интерактивном режиме. Я везде искал, но не смог найти документацию, которая показывает мне, как аутентифицироваться, не открывая окно.

Кажется, что я должен использовать AuthenticationContext.AcquireTokenByAuthorizationCode, но я не могу найти хороших примеров того, как это следует использовать.

Любое направление очень ценится!

ответ

0
  • Добавить ссылку NuGet на Microsoft.CrmSdk.XrmTooling.CoreAssembly.
  • Включите строку подключения в приложении конфигурации (может включать имя пользователя и пароль, а)
<connectionStrings> 
    <add name="CrmService" connectionString="Url=https://UniqueOrgName.crm.dynamics.com;AuthType=Office365;"/> 
</connectionStrings> 

Вызов этот код:

private static CrmServiceClient CreateCrmConnection(string userName, string password) 
{ 
    var url = ConfigurationManager.ConnectionStrings["CrmService"].ConnectionString; 
    var client = new CrmServiceClient(string.Format("{0}UserName={1};Password={2};", url, userName, password)); 

    if (client.IsReady) 
    { 
     return client; 
    } 
    else 
    { 
     // Display the last error. 
     Console.WriteLine("Error occurred: {0}", client.LastCrmError); 

     // Display the last exception message if any. 
     Console.WriteLine(client.LastCrmException.Message); 
     Console.WriteLine(client.LastCrmException.Source); 
     Console.WriteLine(client.LastCrmException.StackTrace); 

     throw new Exception("Unable to Connect to CRM"); 
    } 
} 
Смежные вопросы