|
10.04.2015, 11:24 | #1 |
Участник
|
CRM 4.0 Авторизация
Добрый день.
Поставлена задача коннектиться к CRM из-под PHP и забирать данные. Подскажите, пожалуйста, как в этом случае организовать авторизацию (программно) на CRM с наименьшими потерями. |
|
10.04.2015, 11:43 | #2 |
Чайный пьяница
|
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
За это сообщение автора поблагодарили: probka (1). |
11.04.2015, 14:29 | #3 |
Участник
|
|
|
13.04.2015, 16:18 | #4 |
Участник
|
А браузер ссылку открывает? Должны быть методы и пр.
|
|
13.04.2015, 16:45 | #5 |
Участник
|
Нет, не открывает. Возникает окошко с запросом авторизации, хотя по идее такого окна не должно быть. Полагаю, что тут больше задача администрирования, но я не сильна в этих вопросах.
|
|
14.04.2015, 07:47 | #6 |
Участник
|
Действуйте по шагам:
1. CRM открывается в IE (интранет) под текущим пользователем или тем, который нужен. 2. Проверка веб-сервиса, должны быть видны все методы. 3. Коннект из вашей системы с указанным пользователем. |
|
10.04.2015, 15:41 | #7 |
Консультант-джедай
|
Есть вообще мощная штука http://phpmscrm.codeplex.com/
__________________
Крокодил, крокожу и буду крокодить. Человек человеку - волк , а зомби зомби - зомби. Экстремал и буду экстремать! Блога |
|
14.04.2015, 19:58 | #8 |
Moderator
|
Прошу прощения, с чего вы вообще решили, что сервис не требует авторизации? Требует как и все остальные: https://msdn.microsoft.com/en-us/library/bb955359.aspx
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
14.04.2015, 20:24 | #9 |
Участник
|
Цитата:
Сообщение от Артем Enot Грунин
Прошу прощения, с чего вы вообще решили, что сервис не требует авторизации? Требует как и все остальные: https://msdn.microsoft.com/en-us/library/bb955359.aspx
https://msdn.microsoft.com/en-us/library/cc151054.aspx |
|
14.04.2015, 19:59 | #10 |
Moderator
|
Андрей, ты уже отвечал на подобный вопрос: https://social.microsoft.com/Forums/...vice?forum=crm
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
15.04.2015, 13:24 | #11 |
Moderator
|
И тем не менее, нужно авторизоваться!
X++: //Retrieve a list of available organizations. RetrieveOrganizationsRequest orgRequest = new RetrieveOrganizationsRequest(); orgRequest.UserId = domain + "\\" + username; orgRequest.Password = password;
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
15.04.2015, 13:55 | #12 |
Участник
|
Цитата:
Сообщение от Артем Enot Грунин
И тем не менее, нужно авторизоваться!
X++: //Retrieve a list of available organizations. RetrieveOrganizationsRequest orgRequest = new RetrieveOrganizationsRequest(); orgRequest.UserId = domain + "\\" + username; orgRequest.Password = password; Если мои слова Вас не убеждают, то, может быть, подскажете, как написать SOAP запрос к веб-сервису /MSCRMServices/2007/SPLA/CrmDiscoveryService.asmx таким образом, чтобы он включал в себя и авторизацию на данном сервисе? Последний раз редактировалось probka; 15.04.2015 в 13:58. |
|
15.04.2015, 14:06 | #13 |
Чайный пьяница
|
Чтобы снять запрос самый простой способ - это Fiddler. Напишите приложение на C#, которое будет подключаться к CRM, запустите Fiddler, запустите ваше приложение. В Fiddler сможете получить результат запроса.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
За это сообщение автора поблагодарили: probka (1). |
15.04.2015, 15:32 | #14 |
Участник
|
Андрей, вы знаете, тут тоже засада. Из C# тоже почему-то не виден сервис /MSCRMServices/2007/SPLA/CrmDiscoveryService.asmx. Определенно, админы что-то намудрили с настройками.
|
|
15.04.2015, 17:37 | #15 |
Чайный пьяница
|
Судя по всему - да. Так что если сможете решить эту проблему - сможете решить и всё оставшееся.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
15.04.2015, 14:16 | #16 |
Участник
|
Цитата:
Сообщение от a33ik
Рукалицо... Не судите по своему опыту. Почитайте для самообразования надосуге.
Цитата:
Сообщение от probka
Вы не тот пример смотрите. Мой случай вот этот:
https://msdn.microsoft.com/en-us/library/cc151054.aspx Вообще разрешать анонимный доступ к вебсервису (даже такой как CrmDiscoveryService) - это не очень хорошо. Цитата:
Сообщение от probka
Это Вы мне привели кусок не про авторизацию. Это параметры запроса, который передается в метод Execute веб сервиса. Внимательнее надо код читать. И так же можно было внимательнее почитать меня, я парой постов выше написала что значения параметров у меня есть.
Если мои слова Вас не убеждают, то, может быть, подскажете, как написать SOAP запрос к веб-сервису /MSCRMServices/2007/SPLA/CrmDiscoveryService.asmx таким образом, чтобы он включал в себя и авторизацию на данном сервисе? CRM 4.0 Авторизация X++: 1. Create an admin user in the active directory where the crm is install. 2. Add the user created in step 1 in the crm user. 3. Set the running user of the application as the created user in step 1. 4. Add the running user of the application pool of the crm service. 5. In the application, use the following code to connect to the discovery service (that give you a authentication ticket on crm) and use it to do the call: CrmService service = new CrmService(); CrmAuthenticationToken token = new CrmAuthenticationToken(); token.AuthenticationType = 0; token.OrganizationName = organization; CrmDiscoveryService discoveryService = new CrmDiscoveryService(); discoveryService.UseDefaultCredentials = true; discoveryService.Url = discoveryServiceUrl; //Call the crm discovery service to get the related organisation of the user that execute the code (as created in step 2) RetrieveOrganizationsRequest orgRequest = new RetrieveOrganizationsRequest(); RetrieveOrganizationsResponse orgResponse = (RetrieveOrganizationsResponse)discoveryService.Execute(orgRequest); OrganizationDetail orgInfo = new OrganizationDetail(); foreach (OrganizationDetail orgDetail in orgResponse.OrganizationDetails) { if (orgDetail.OrganizationName == [your organisation name]) { orgInfo = orgDetail; var cred = ConfigurationData.GetUriCredentialSection("DiscoveryService/Credentials"); RetrieveCrmTicketRequest ticketRequest = new RetrieveCrmTicketRequest(); ticketRequest.OrganizationName = organization; ticketRequest.UserId =[user name of the step 2 user] ticketRequest.Password = [user password of the step 2 user] RetrieveCrmTicketResponse ticketResponse = (RetrieveCrmTicketResponse)discoveryService.Execute(ticketRequest); //retrive the authentification token.CrmTicket = ticketResponse.CrmTicket; break; } } service.CrmAuthenticationTokenValue = token; service.Url = serviceUrl; service.UseDefaultCredentials = true; //Do your own call with service 6. Enjoy the crm service possibility! Hope that could help somwone :) Последний раз редактировалось lode; 15.04.2015 в 14:19. |
|
15.04.2015, 15:28 | #17 |
Участник
|
Вам тоже советую внимательнее читать код
Цитата:
Цитата:
Сообщение от lode
Чем Вас не устраивает ответ, помеченный как решение по ссылке выше?
CRM 4.0 Авторизация |
|
16.04.2015, 14:33 | #18 |
Moderator
|
Цитата:
Сообщение от probka
Это Вы мне привели кусок не про авторизацию. Это параметры запроса, который передается в метод Execute веб сервиса. Внимательнее надо код читать. И так же можно было внимательнее почитать меня, я парой постов выше написала что значения параметров у меня есть.
Если мои слова Вас не убеждают, то, может быть, подскажете, как написать SOAP запрос к веб-сервису /MSCRMServices/2007/SPLA/CrmDiscoveryService.asmx таким образом, чтобы он включал в себя и авторизацию на данном сервисе? На PHP, увы не пишу, но делал такое: http://www.axforum.info/forums/blog.php?b=152. Если нужно, пришлю версию, которая работает с IFD. В отличие от вашего кода, мой работает, так что будьте уверены: он содержит ту часть, которая отвечает за авторизацию.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional Последний раз редактировалось Артем Enot Грунин; 16.04.2015 в 14:41. |
|
16.04.2015, 14:56 | #19 |
Участник
|
Цитата:
Цитата:
Цитата:
Сообщение от Артем Enot Грунин
На PHP, увы не пишу, но делал такое: http://www.axforum.info/forums/blog.php?b=152. Если нужно, пришлю версию, которая работает с IFD. В отличие от вашего кода, мой работает, так что будьте уверены: он содержит ту часть, которая отвечает за авторизацию.
|
|
15.04.2015, 14:26 | #20 |
Участник
|
К вопросу об отдельном вебсервисе. Для данных Вам вполне хватило бы и одного Fetch.
Весь вебсервис состоял бы из одного метода: X++: [WebMethod] public string Fetch(String query) { return (new CrmService()).Fetch(query); } |
|
|
|