2016-03-11 68 views
0

我正在創建需要訪問CRM Online 2016中的數據的控制檯應用程序。這將作爲計劃作業運行,而不是交互式運行。看來我需要使用OAuth進行身份驗證。如何使用非交互式用戶對CRM Online進行身份驗證?

我已經做了以下內容:

  • 我在CRM中創建一個非交互式用戶這個整合的目的。 - 我已經使用Azure AD註冊了我的應用程序並擁有客戶端ID。

我無法弄清楚的是如何對Web服務進行身份驗證。我被帶到這個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"); 
    } 
} 
相關問題