1

Pure Javascript を使用して、MS Dynamics CRM Online 2011 からデータを追加/取得したいと考えています。私は一日中検索しましたが、Dynamics SDK、C#、VB、または JScript でしかこれを行うことができませんでした。

純粋なJavaScriptでこれを行う方法はありますか? データを送受信する Web サービスを見つける必要があるだけですが、見つかりませんでした。そのようなWebサービスまたはAPIは存在しますか??? 私が完全に混乱しているのを助けてください!!! ありがとう。

4

2 に答える 2

2

他の人が述べたように必要な場合は、SOAPを使用して接続できます(おそらくお勧めしませんが、知りたいことです)。SOAP/JavaScript の使用方法がわからない場合は、これを読むことをお勧めします: 最も単純な SOAP の例

Office 365 を使用して CRM Online に接続するには (すべての Windows Live アカウントが Office 365 に移行されます)、セキュリティ トークンを取得して、それを要求に使用する必要があります。

以下は、JavaScript 用にリファクタリングできる PHP のトークンのリクエストです。

$TokenSOAP = '<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
                              <s:Header>
                                <a:Action s:mustUnderstand="1">http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue</a:Action>
                                <a:MessageID>urn:uuid:%s</a:MessageID>
                                <a:ReplyTo>
                                  <a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
                                </a:ReplyTo>
                                <a:To s:mustUnderstand="1">%s</a:To>
                                <o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
                                  <u:Timestamp u:Id="_0">
                                    <u:Created>%sZ</u:Created>
                                    <u:Expires>%sZ</u:Expires>
                                  </u:Timestamp>
                                  <o:UsernameToken u:Id="uuid-cdb639e6-f9b0-4c01-b454-0fe244de73af-1">
                                    <o:Username>%s</o:Username>
                                    <o:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">%s</o:Password>
                                  </o:UsernameToken>
                                </o:Security>
                              </s:Header>
                              <s:Body>
                                <t:RequestSecurityToken xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust">
                                  <wsp:AppliesTo xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
                                    <a:EndpointReference>
                                      <a:Address>urn:crmapac:dynamics.com</a:Address>
                                    </a:EndpointReference>
                                  </wsp:AppliesTo>
                                  <t:RequestType>http://schemas.xmlsoap.org/ws/2005/02/trust/Issue</t:RequestType>
                                </t:RequestSecurityToken>
                              </s:Body>
                            </s:Envelope>';

        $TokenSOAP = sprintf($TokenSOAP, self::gen_uuid(), 'https://login.microsoftonline.com/RST2.srf',  self::getCurrentTime(), self::getNextDayTime(), $username, $password);

CRM リージョンに応じて、必要に応じてエンドポイント参照アドレスを変更します。

これにより、2 つのセキュリティ トークンとキー識別子が返されます。

次に、追加と取得を行う必要があります。「CRM 2011 SOAP」と次の 4 つの関数「Create」、「Update」、「Retrieve」、および「RetrieveMultiple」をグーグルで検索すると、たとえば多くの SOAP サンプルが得られるはずです。

http://www.mscrmconsultant.com/2012/07/create-update-delete-record-using.html

于 2013-07-15T01:37:55.040 に答える
0

Javascript と CRM を操作する 2 つの方法は、OData または SOAP サービスのいずれかを使用することです。最も簡単な方法は、可能であれば OData を使用することです。

遭遇する問題は、Odata による認証です。 OData アクセスは、CRM JavaScript および Silverlight 以外ではサポートされていません。(ただし、LinqPad を使用して Odata クエリを作成しましたが、CRM に問題なくクエリを実行したため、それが何であるかはわかりません)

これを回避するための一般的な方法は、CRM に対して認証する独自の Web サービスを作成し、SDK を使用してデータを取得および更新し、安らかな方法で公開することです。

Guido が指摘しているように、Java から SOAP リクエストを使用できるはずですが、CRM 内からしかこれを行ったことがないため、どのような認証の問題が発生するかわかりません。

于 2013-06-24T14:01:57.303 に答える