SharePoint 2013 APP开发示例(三)使用远程的web资源 - 面向对象网,web开发,Sharepoint,学习,对象 - 面向对象技术开发

面向对象技术开发

会员投稿 投稿指南 站长资讯通告:
您的位置: 首页 > Web开发 > SharePoint > 正文

SharePoint 2013 APP开发示例(三)使用远程的web资源

来源: www.bianceng.cn 阅读:

在这个示例里我们将详细介绍 TokenHelper 类, 我们将看到它是怎么简单地从远程web站点访问SharePoint的。我们还将取到它的一些值。这将帮助我们理解连接是怎么被构造的,同时也方便我们的以一的调试。我们将创建一个简单的 auto-hosted app,用TokenHelper类从相关的SharePoint服务器读取数据,并显示在页面上。我们还将取出一些token的值以方便看到它们的内容。

1. 打开Visual Studio 2012.

2. 创建一个新的  C# SharePoint app 项目:RemoteWebApp。

3. 选择 Autohosted (它是缺省项).

这将生成二个projects. 第一个是 SharePoint app web, 第二个是远程web站点。当debug时,远程的web app 将运行在本地的IIS Express上。当通过

remote web site. When debugging, the remote web app will run on a local copy of IIS Express. When deployed

Office Store 或一个 App 目录,远程的web将被发布到 Azure 云。

4. 按F5运行app

这个页面将查询host web 站咪的title,并显示在页面上。它只用了几行就做到了,因为它使用了TokenHelper 这个类。我们下面将详细介绍它的使用。

5. 停止调试

6. 打开Default.aspx.cs

7. 注释Page_Load() 里已有的代码

8. 加入下面的引用:

using Microsoft.IdentityModel.S2S.Protocols.OAuth2;
using Microsoft.SharePoint.Client;
using System;
using System.Collections.Generic;
using System.Data;
using System.Globalization;
using System.Linq;
using System.Web;
using System.Web.Configuration;
using System.Web.UI;
using System.Web.UI.WebControls;

9. 加入下面的代码到Page_Load() :

// Get app info from web.config
            string clientID = string.IsNullOrEmpty(WebConfigurationManager.AppSettings.Get("ClientId"))
                                ? WebConfigurationManager.AppSettings.Get("HostedAppName")
                                : WebConfigurationManager.AppSettings.Get("ClientId");
            string clientSecret = string.IsNullOrEmpty(WebConfigurationManager.AppSettings.Get("ClientSecret"))
                                ? WebConfigurationManager.AppSettings.Get("HostedAppSigningKey")
                                : WebConfigurationManager.AppSettings.Get("ClientSecret");

client ID 和 secret 是从远程web的配置文件读取到的,ID 指向 app, secret 被用作获取 access tokens。

10. 加入下面的代码到Page_Load() :

// Get values from Page.Request
            string reqAuthority = Request.Url.Authority;
            string hostWeb = Page.Request["SPHostUrl"];
            string hostWebAuthority = (new Uri(hostWeb)).Authority;

11. 加入下面的代码到Page_Load() :

// Get Context Token
            string contextTokenStr = TokenHelper.GetContextTokenFromRequest(Request);
            SharePointContextToken contextToken =
                TokenHelper.ReadAndValidateContextToken(contextTokenStr, reqAuthority);
  
            // Read data from the Context Token
            string targetPrincipalName = contextToken.TargetPrincipalName;
            string cacheKey = contextToken.CacheKey;
            string refreshTokenStr = contextToken.RefreshToken;
            string realm = contextToken.Realm;

SharePoint 还将传递encode  context token, ReadAndValidateContextToken() 方法把它转换成一个 SharePointContextToken 对象,这样就更容易访问它的内容, 验证这个token指的是验证它的地址是来自这个app。剩下的代码就是从token里取出一些值.

12. 把这下面这个方法加到 Default 页面.  

private static string GetFormattedPrincipal(string principalName, string hostName, string realm)
        {
            if (!String.IsNullOrEmpty(hostName))
            {
                return String.Format(CultureInfo.InvariantCulture, "{0}/{1}@{2}", principalName, hostName, realm);
            }
            else
            {
                return String.Format(CultureInfo.InvariantCulture, "{0}@{1}", principalName, realm);
            }
        }

Tags:
相关文章列表: