SharePoint 2013 App – 자동 호스트 (Autohosted App) (3)
SharePoint 2013 App – 자동 호스트 (Autohosted App) (3)
이번 글에서는 이전에서 작업한 SharePoint 2013 에 대한 프로젝트에 SharePoint의 개체를 액세스해보는 코드를 작성해보겠습니다. 이전 버전에서도 제공된 CSOM-클라이언트 개체 모델(Client Side Object Model) 을 자동 호스트 웹 프로젝트에서 액세스 하게 되며 인증에 대한 부분은 TokenHelper.cs 파일을 통해서 처리되게 구성할 수 있습니다.
TokenHelper.cs 과 CSOM 코드에 대한 내용은 SharePoint 2013 응용 프로그램을 생성하면 웹 프로젝트에 있는 것을 알 수 있습니다.
여기서는 앞에서 작업했던 프로젝트에 CSOM 을 적용해보도록 하겠습니다. 먼저 프로젝트에서 TokenHelper.cs 파일이 있는지 확인하고 소스를 열어 네임스페이스가 프로젝트 이름과 동일한 이름으로 구성되어 있는지 확인합니다. 다르다면 변경해주면 됩니다.
namespace AutohostMVC4Web
{
public class TokenHelper
{
MVC 4 프로젝트에 빈 컨트롤러를 추가합니다. 이름은 Home으로 지정하겠습니다.
생성된 컨트롤러에 아래와 같은 using 구문을 추가합니다.
using Microsoft.SharePoint.Client;
Index 액션 메서드를 아래와 같이 수정합니다.
public ActionResult Index()
{
var contextToken =
TokenHelper.GetContextTokenFromRequest(System.Web.HttpContext.Current.Request);
var hostWeb = System.Web.HttpContext.Current.Request["SPHostUrl"];
using (var clientContext =
TokenHelper.GetClientContextWithContextToken(hostWeb, contextToken
, Request.Url.Authority))
{
Web web = clientContext.Web;
clientContext.Load(web, w => w.Lists.Include(l => l.Title).Where(l => !l.Hidden));
clientContext.ExecuteQuery();
clientContext.Dispose();
return View(web.Lists);
}
}
SharePoint URL 을 받아 TokenHelper.GetClientContextWithContextToken 를 통해 CSOM의 Context 개체를 얻어 옵니다. 그리고는 clientContext를 통해 SharePoint 개체들을 액세스 하게 됩니다.
자 그럼 View 에서 화면에 출력해보도록 하겠습니다. Index 메서드에서 오른쪽 클릭하고 뷰를 생성합니다.
뷰에서는 아래와 같은 코드로 변경합니다.
@{
ViewBag.Title = "Index";
}
<div>
<ul>
@foreach (var list in Model)
{
<li>@list.Title</li>
}
</ul>
</div>
AppManifest.xml 파일을 더블 클릭하여 시작 주소를 Home 으로 지정하고 솔루션을 배포하여 자동 호스트 웹에서 CSOM 결과를 확인합니다. {StandardTokens} 에는 SPHostUrl 과 SPAppWebUrl 이 포함되어 있습니다.
필요하다면 아래와 같이 디버깅도 가능합니다.
자동 호스트 웹 응용 프로그램에서 SharePoint 에 있는 개체를 액세스해서 화면에 출력하고 있습니다.
모양이 너무 간단한데 다음 글에서는 Chrome Style을 적용해보겠습니다.