如何通过windows live身份验证并使用CRM Odata服务?
我现在有一个项目,需要为DynamicCRM 2011构建一个web门户。我想使用CRM odata服务,但无法通过c代码中的windows live身份验证。我还尝试用谷歌搜索一些例子。不幸的是,没有运气。我希望以前做过这件事的人能告诉我怎么做。太谢谢你了 如果您正在用C#编写代码以与Dynamics 2011进行通信,您最好使用organization服务。OData端点更适合JavaScript代码和客户端逻辑如何通过windows live身份验证并使用CRM Odata服务?,odata,dynamics-crm-2011,Odata,Dynamics Crm 2011,我现在有一个项目,需要为DynamicCRM 2011构建一个web门户。我想使用CRM odata服务,但无法通过c代码中的windows live身份验证。我还尝试用谷歌搜索一些例子。不幸的是,没有运气。我希望以前做过这件事的人能告诉我怎么做。太谢谢你了 如果您正在用C#编写代码以与Dynamics 2011进行通信,您最好使用organization服务。OData端点更适合JavaScript代码和客户端逻辑 Dynamics CRM 2011 SDK()包含如何使用Windows Li
Dynamics CRM 2011 SDK()包含如何使用Windows Live ID连接到该服务的示例。下载并解压缩SDK后,首先查看\samplecode\cs\quickstart。如果您使用C编写代码,以便与Dynamics 2011通信,最好使用组织服务。OData端点更适合JavaScript代码和客户端逻辑
Dynamics CRM 2011 SDK()包含如何使用Windows Live ID连接到服务的示例。下载并解压缩SDK后,请查看\samplecode\cs\quickstart以开始使用。检查IIS/身份验证设置
disabled - Anonymous Authentication
enabled - ASP.NET Impersonation
enabled - Windows Authentication
这是IIS将用户凭据传递到web门户所必需的。然后,您可以使用以下示例代码传递这些凭据
public ActionResult HitCRM()
{
var uri = System.Configuration.ConfigurationManager.AppSettings["CRMURI"];
ClientCredentials credentials = new ClientCredentials();
var dinfo = ServiceConfigurationFactory.CreateConfiguration<IDiscoveryService>(new Uri(uri));
var dsp = new DiscoveryServiceProxy(dinfo, credentials);
dsp.Authenticate();
var retrieveOrganizationsRequest = new RetrieveOrganizationsRequest();
var retrieveOrganizationsResponse = dsp.Execute(retrieveOrganizationsRequest) as RetrieveOrganizationsResponse;
if (retrieveOrganizationsResponse.Details.Count == 1)
{
var organizationDetail = retrieveOrganizationsResponse.Details[0];
Uri orgServiceUri = new Uri(organizationDetail.Endpoints[EndpointType.OrganizationService]);
IServiceConfiguration<IOrganizationService> orgConfigInfo = ServiceConfigurationFactory.CreateConfiguration<IOrganizationService>(orgServiceUri);
var creds = new ClientCredentials();
IOrganizationService organizationService = new OrganizationServiceProxy(orgConfigInfo, creds);
Guid userid = ((WhoAmIResponse)organizationService.Execute(new WhoAmIRequest())).UserId;
var systemUser = organizationService.Retrieve("systemuser", userid, new ColumnSet(new string[] { "firstname", "lastname" }));
// Retrieve the version of Microsoft Dynamics CRM.
var versionRequest = new RetrieveVersionRequest();
var versionResponse = (RetrieveVersionResponse)organizationService.Execute(versionRequest);
ViewBag.FirstName = systemUser.GetAttributeValue<string>("firstname");
ViewBag.LastName = systemUser.GetAttributeValue<string>("lastname");
ViewBag.Version = versionResponse.Version;
}
return View();
}
public ActionResult HitCRM()
{
var uri=System.Configuration.ConfigurationManager.AppSettings[“CRMURI”];
ClientCredentials=新的ClientCredentials();
var dinfo=ServiceConfigurationFactory.CreateConfiguration(新Uri(Uri));
var dsp=新发现服务代理(dinfo,凭证);
dsp.Authenticate();
var retrieveOrganizationsRequest=新的retrieveOrganizationsRequest();
var retrieveOrganizationsResponse=dsp.Execute(retrieveOrganizationsRequest)作为retrieveOrganizationsResponse;
如果(retrieveOrganizationsResponse.Details.Count==1)
{
var organizationDetail=retrieveOrganizationsResponse.Details[0];
Uri orgServiceUri=新Uri(organizationDetail.Endpoints[EndpointType.OrganizationService]);
IServiceConfiguration orgConfigInfo=ServiceConfigurationFactory.CreateConfiguration(orgServiceUri);
var creds=new ClientCredentials();
IOOrganizationService organizationService=新的OrganizationServiceProxy(orgConfigInfo,creds);
Guid userid=((WhoAmIResponse)organizationService.Execute(new WhoAmIRequest()).userid;
var systemUser=organizationService.Retrieve(“systemUser”,userid,new ColumnSet(新字符串[]{“firstname”,“lastname”}));
//检索Microsoft Dynamics CRM的版本。
var versionRequest=new RetrieveVersionRequest();
var versionResponse=(RetrieveVersionResponse)organizationService.Execute(versionRequest);
ViewBag.FirstName=systemUser.GetAttributeValue(“FirstName”);
ViewBag.LastName=systemUser.GetAttributeValue(“LastName”);
ViewBag.Version=versionResponse.Version;
}
返回视图();
}
检查您的IIS/身份验证设置
disabled - Anonymous Authentication
enabled - ASP.NET Impersonation
enabled - Windows Authentication
这是IIS将用户凭据传递到web门户所必需的。然后,您可以使用以下示例代码传递这些凭据
public ActionResult HitCRM()
{
var uri = System.Configuration.ConfigurationManager.AppSettings["CRMURI"];
ClientCredentials credentials = new ClientCredentials();
var dinfo = ServiceConfigurationFactory.CreateConfiguration<IDiscoveryService>(new Uri(uri));
var dsp = new DiscoveryServiceProxy(dinfo, credentials);
dsp.Authenticate();
var retrieveOrganizationsRequest = new RetrieveOrganizationsRequest();
var retrieveOrganizationsResponse = dsp.Execute(retrieveOrganizationsRequest) as RetrieveOrganizationsResponse;
if (retrieveOrganizationsResponse.Details.Count == 1)
{
var organizationDetail = retrieveOrganizationsResponse.Details[0];
Uri orgServiceUri = new Uri(organizationDetail.Endpoints[EndpointType.OrganizationService]);
IServiceConfiguration<IOrganizationService> orgConfigInfo = ServiceConfigurationFactory.CreateConfiguration<IOrganizationService>(orgServiceUri);
var creds = new ClientCredentials();
IOrganizationService organizationService = new OrganizationServiceProxy(orgConfigInfo, creds);
Guid userid = ((WhoAmIResponse)organizationService.Execute(new WhoAmIRequest())).UserId;
var systemUser = organizationService.Retrieve("systemuser", userid, new ColumnSet(new string[] { "firstname", "lastname" }));
// Retrieve the version of Microsoft Dynamics CRM.
var versionRequest = new RetrieveVersionRequest();
var versionResponse = (RetrieveVersionResponse)organizationService.Execute(versionRequest);
ViewBag.FirstName = systemUser.GetAttributeValue<string>("firstname");
ViewBag.LastName = systemUser.GetAttributeValue<string>("lastname");
ViewBag.Version = versionResponse.Version;
}
return View();
}
public ActionResult HitCRM()
{
var uri=System.Configuration.ConfigurationManager.AppSettings[“CRMURI”];
ClientCredentials=新的ClientCredentials();
var dinfo=ServiceConfigurationFactory.CreateConfiguration(新Uri(Uri));
var dsp=新发现服务代理(dinfo,凭证);
dsp.Authenticate();
var retrieveOrganizationsRequest=新的retrieveOrganizationsRequest();
var retrieveOrganizationsResponse=dsp.Execute(retrieveOrganizationsRequest)作为retrieveOrganizationsResponse;
如果(retrieveOrganizationsResponse.Details.Count==1)
{
var organizationDetail=retrieveOrganizationsResponse.Details[0];
Uri orgServiceUri=新Uri(organizationDetail.Endpoints[EndpointType.OrganizationService]);
IServiceConfiguration orgConfigInfo=ServiceConfigurationFactory.CreateConfiguration(orgServiceUri);
var creds=new ClientCredentials();
IOOrganizationService organizationService=新的OrganizationServiceProxy(orgConfigInfo,creds);
Guid userid=((WhoAmIResponse)organizationService.Execute(new WhoAmIRequest()).userid;
var systemUser=organizationService.Retrieve(“systemUser”,userid,new ColumnSet(新字符串[]{“firstname”,“lastname”}));
//检索Microsoft Dynamics CRM的版本。
var versionRequest=new RetrieveVersionRequest();
var versionResponse=(RetrieveVersionResponse)organizationService.Execute(versionRequest);
ViewBag.FirstName=systemUser.GetAttributeValue(“FirstName”);
ViewBag.LastName=systemUser.GetAttributeValue(“LastName”);
ViewBag.Version=versionResponse.Version;
}
返回视图();
}
下面的链接显示windows live身份验证以及从Dynamics CRM 2011 online获取数据
希望对您有用下面的链接显示windows live身份验证以及从Dynamics CRM 2011在线获取数据
希望对您有用OData服务只能通过CRM Online中的代码访问。它非常适合于CRM内部的javascript(如果您需要的话,它非常有用),但是CRM服务器外部的任何代码都无法访问它 微软推荐的访问CRM Web服务的方法是通过WCF,如许多SDK示例所示 如果.NET不是您的选项,请链接到如何仅使用SOAP访问数据