2012-08-24 2 views
1

codeplex 또는 다른 JavaScript 기반 솔루션의 SPServices jQuery 라이브러리를 사용하면이 라이브러리와 jQuery를 사용하여 독립 실행 형 HTML 페이지에서 SharePoint 2010 웹 서비스를 호출 할 수 있습니까? 기본적으로 기존 문서 세트에 파일을 업로드해야하지만 독립형 페이지에서 파일을 업로드해야합니다. 사용자는 Single Sign-On 상황에 있으며 Dynamics CRM에 로그인합니다.외부 SharePoint 페이지 컨텍스트에서 SPService 호출

SPService at CodePlex

답변

1

구글 "셰어 외부 spservices".

두 번째 링크는 SPServices 저자에서 Must the page using SPServices be hosted within SharePoint?

입니다 : 당신이 SPServices를 사용하는 페이지가 이 셰어 이내로이없는 동안

, 그것은 인증 문제의 경우에 실행하는 것이 일반적이다 그들은 이 아닙니다. SharePoint에서 사용자의 신원을 알지 못하거나 이 도메인 간 스크립팅 문제가 될 수 있습니다. 에있는 변형이 너무 많아서 대개 예 또는 아니요 답을 제공합니다.

1

이것은 오래된 글이지만,이 글을 직접 해보려 고 노력한 끝에 자체적으로 SharePoint 사이트에서 호스팅되는 다른 html 페이지를로드하는 독립형 html 페이지에서 iFrame을 작성하여 인증 문제를 해결했습니다. iFrame에로드 된 페이지는 postMessage()를 사용하여 List 데이터를 상위 페이지로 보냅니다. 이것은 파이어 폭스와 크롬에서도 잘 작동하는 것으로 보인다.

요약

:

1 단계 : HTML 페이지 (SharepointProxy.html)를 작성하고 조회 할 사이트의 SharePoint 목록에 넣고 :

<!DOCTYPE html> 
<html> 
    <head> 
     <title>Web Proxy IFrame</title> 
     <meta charset="windows-1252"> 
     <meta name="viewport" content="width=device-width"> 
     <script src="jquery-1.10.2.js"></script> 
     <script src="jquery.SPServices-2014.01.js"></script> 
     <script> 
      function callback(e){ 

       if(e.origin == "https://your.otherdomain.com/index"){ //this is your standalone web page 
        e.source.postMessage(jsonToSend, "https://your.otherdomain.com/index"); //same standalone web page here 
       } 
       return true; 
      } 
     </script> 
    </head> 
    <body> 
     <h1>SharePoint proxy - Do Not delete!</h1> 
     <p>If you'd like to know further detail about its purpose, please email [email protected]</p> 
     <h2>Purpose</h2> 
     <p>This page serves as a proxy to call within an Iframe on an external site. This page fetches [whatever] 
      from the SharePoint Portal and makes them available as a JSON string</p> 


     <script> 
      var someListData; 
      $().SPServices({ 
       operation: "GetListItems", 
       webURL: "https://sharepoint-portal.com/sites/your_site", 
       listName: "List Name", 
       async: false, 
       completefunc: function(xData, Status) { 
        //alert(xData.responseText); 
        someListData = $(xData.responseXML).find("z\\:row, row").map(function() { 
         return { 
          value: $(this).attr("ows_LinkTitle") || " ", 
          desc: $(this).attr("ows_Details") || " " 
         }; 
        }).get(); 
       } 
      }); 

      var jsonToSend = JSON.stringify(someListData); 

      document.addEventListener("message", callback,false); 
      window.top.postMessage(jsonToSend, "*"); 
     </script> 
    </body> 
</html> 

2 단계 : 온 웹 페이지에서 셰어 포인트 목록 데이터를 표시하려면 다음 기능을 사용하여 iFrame을 만들고 SharePoint에서 페이지를로드하십시오 :

(function() { //create an iFrame to load our SharepointProxy.html page inside of 
    var iFrame = document.createElement("iframe"); 
    iFrame.style.display = "none"; 
    iFrame.id = "sharePointProxyFrameContainer"; 
    iFrame.src = "https://sharepoint-portal.com/sites/your_site/Site%20Assets/SharepointProxy.html"; 
    document.body.appendChild(iFrame); 
})(); 

function processSharePointListData(d){ 
    var data = JSON.parse(d); 
    // do something with data 
} 

window.addEventListener("message", function(e) { 
    if (e.origin === "https://sharepoint-portal.com/") { 
     processSharePointListData(e.data); 
     return true; 
    } 

}, false); 
관련 문제