Tìm hiểu khái niệm Provider-Hosted SharePoint trên Office 365

Một Provider-Hosted SharePoint app bao gồm cả app SharePoint được deploy thẳng tới một trang SharePoint 2013 và một trang web application riêng biệt. Nếu provider-hosted web application là một ASP.NET web application, bạn có thể sử dụng Office Developer Tools cho Visual Studio 2012 để tạo cả 2 thành phần này trong provider-hosted app.

TẠO APP SHAREPOINT 2013 PROJECT:

Bước 1: Mở Visual Studio 2012, chọn File / New / Project

Bước 2: Chọn Office/SharePoint à Apps, sau đó chọn App for SharePoint 2013.

Bước 3: Đặt tên và chọn nơi lưu project.

Bước 4: Nhấn OK.

Bước 5: Nhập địa chỉ trang SharePoint bạn dùng để debug app và chọn Provider-hosted hosting.

Bên dưới How do you want your app to authenticate? Chọn Use a client secret (requires a SharePoint farm connected to ACS).

Bước 6: Nhấn Finish

Bước 7: Chọn Default.aspx và thêm vào đoạn sau:

<form id=”form1″ runat=”server”>

<div>

<asp:ScriptManager ID=”ScriptManager1″ runat=”server” EnablePartialRendering=”true” />

<asp:UpdatePanel ID=”PopulateData” runat=”server” UpdateMode=”Conditional”>

<ContentTemplate>

<table border=”1″ cellpadding=”10″>

<tr><th><asp:LinkButton ID=”CSOM” runat=”server” Text=”Populate Data” OnClick=”CSOM_Click” /></th>

</tr>

<tr><td>

<h2>SharePoint Site</h2>

<asp:Label runat=”server” ID=”WebTitleLabel”/>

<h2>Current User:</h2>

<asp:Label runat=”server” ID=”CurrentUserLabel” />

<h2>Site Users</h2>

<asp:ListView ID=”UserList” runat=”server”>

<ItemTemplate ><asp:Label ID=”UserItem” runat=”server” Text=”<%# Container.DataItem.ToString()  %>”></asp:Label><br /></ItemTemplate>

</asp:ListView>

<h2>Site Lists</h2>

<asp:ListView ID=”ListList” runat=”server”>

<ItemTemplate ><asp:Label ID=”ListItem” runat=”server” Text=”<%# Container.DataItem.ToString()  %>”></asp:Label><br /></ItemTemplate>

</asp:ListView>

</td>

</tr>

</table>

</ContentTemplate>

</asp:UpdatePanel>

</div>

</form>

Bước 8: Mở file Default.aspx.cs và thêm vào như đoạn code bên dưới. Page_Load method sử dụng methods trong file TokenHelper.cs để lấy nội dung từ Request object và nhận access token từ ACS. RetrieveWithCSOM method sử dụng SharePoint CSOM để lấy thông tin từ trang của bạn và hiển thị nó lên trang.

using Microsoft.SharePoint.Client;

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

namespace ProvideHostedSP_C2App03Web.Pages

{

public partial class Default : System.Web.UI.Page

{

SharePointContextToken contextToken;

string accessToken;

Uri sharePointURL;

string siteName;

string currentUser;

List<string> listOfUsers = new List<string>();

List<string> listOfLists = new List<string>();

protected void Page_Load(object sender, EventArgs e)

{

TokenHelper.TrustAllCertificates();

string strContextToken = TokenHelper.GetContextTokenFromRequest(Page.Request);

if (strContextToken != null)

{

contextToken = TokenHelper.ReadAndValidateContextToken(strContextToken, Request.Url.Authority);

sharePointURL = new Uri(Request.QueryString[“SPHostUrl”]);

accessToken = TokenHelper.GetAccessToken(contextToken, sharePointURL.Authority).AccessToken;

CSOM.CommandArgument = accessToken;

}

else if (!IsPostBack)

{

Response.Write(“Could not find a context token.”);

return;

}

}

private void RetriveWithCSOM(string accessToken)

{

if (IsPostBack)

{

sharePointURL = new Uri(Request.QueryString[“SPHostUrl”]);

}

ClientContext clientContext = TokenHelper.GetClientContextWithAccessToken(sharePointURL.ToString(), accessToken);

// Load the properties for the web object.

Web web = clientContext.Web;

clientContext.Load(web);

clientContext.ExecuteQuery();

// Get the site name.

siteName = web.Title;

// Get the current user.

clientContext.Load(web.CurrentUser);

clientContext.ExecuteQuery();

currentUser = clientContext.Web.CurrentUser.LoginName;

// Load the lists from the web object.

ListCollection lists = web.Lists;

clientContext.Load<ListCollection>(lists);

clientContext.ExecuteQuery();

// Load the current users from the web object.

UserCollection users = web.SiteUsers;

clientContext.Load<UserCollection>(users);

clientContext.ExecuteQuery();

foreach (User siteUser in users)

{

listOfUsers.Add(siteUser.LoginName);

}

foreach (List list in lists)

{

listOfLists.Add(list.Title);

}

}

protected void CSOM_Click(object sender, EventArgs e)

{

string commandAccessToken = ((LinkButton)sender).CommandArgument;

RetriveWithCSOM(commandAccessToken);

WebTitleLabel.Text = siteName;

CurrentUserLabel.Text = currentUser;

UserList.DataSource = listOfUsers;

UserList.DataBind();

ListList.DataSource = listOfLists;

ListList.DataBind();

}

}

}

Bước 9: Nhấn F5 để deploy và run app.

Bước 10: Nhấn Trust It sau khi trang SharePoint được load lên.

Bước 11: Chọn Populate Data và chạy app bạn vừa viết.

Gửi bình luận tại đây