使用SharePoint2013API访问SkyDrive Pro

Categories: Other
Tags: No Tags
Comments: No Comments
Published on: 2013 年 08 月 26 日

[原文发表地址]  Access SkyDrive Pro using the SharePoint 2013 APIs

[原文发表时间]  2013-08-13   6:00 AM

SkyDrive Pro, 个人业务的一个云应用库,一个用户可以存放文件和文档的地方,这个库与他们的设备同步,并与他人分享。它作为SharePoint server 2013 或者在线SharePoint(Office 365)的一部分。本质上它是一个后台的SharePoint文档库,所以你可以使用SharePoint APIs访问它,就像访问SharePonit2013里的其他文档库一样。无论你是使用客户端对象模型(CSOM)或者还是表述性状态转移(REST)—你是可以自己决定。在本文章中,我们将会学习如何构建REST URL来访问在SkyDrive上的文件或者文件夹。

从用户的角度来看,访问自己的SkyDrive pro库,只需要在office365菜单栏点击SkyDrive,如图1所示。

Figure 1. Office 365 menu bar

                                                               图1. Office365 菜单栏

或者可通过使用URL模式直接地浏览:

https://YourO365DomainHere-my.sharepoint.com/personal/
YourUserName_ YourO365DomainHere_onmicrosoft_com/。

 

但是这是从最终用户的角度来看的。作为一个开发人员如何访问SkyDrive Pro?在接下来的这个例子中,我们将使用REST方式来实现。

 

注:如果你的Office 365是使用自定义设置的 — 例如contoso.com— 你的MySite 将来的布局,

https://contoso-my.sharepoint.com/personal/YourUserName_ contoso_com/

 

从基础开始

1. 登录到你的Office365的SharePoint网站上,并使用上述两种方法之一浏览你的SkyDrive Pro 库。

2. 点击Shared with Everyone文件夹并上传文档。以这个例子来说,文档的名字是 myDocument.docx

3. 要使用REST API来查看上传文档的信息,构造一个如下面格式的URL:

https://YourO365DomainHere- my.sharepoint.com/personal/

YourUserName_YourO365DomainHere_onmicrosoft_com/_api/web/GetFileByServerRelativeUrl

(‘/personal/YourUserName_YourO365DomainHere_onmicrosoft_com/Documents/

SharedwithEveryone/myDocument.docx’)。

4. 复制/粘贴到你的浏览器中。返回如下图所示的XML:

Figure 2. Example of XML returned by the REST API

                                   图2. 通过REST API返回的XML的示例

5. 要下载文件,需要往URL追加/$value。当系统提示保存文件时,将其命名为myDocumentDownload.docx, 并保存它。

 

处理文档和作为“项目”的其他文件

1. 关于权威的读/写指导,请参阅MSDN上的Working with lists and list items with REST

2. 想要练习的话你可以上传几个文件到你的SkyDrive Pro库的根目录。现在在你已经登录的 浏览器可以测试出几个REST的读写调用。

3. 使用此格式的 URL:

https://YourO365DomainHere-my.sharepoint.com/personal/
    YourUserName_YourO365DomainHere_onmicrosoft_com/_api/web/
并在URL上附加lists/Documents/items 这样你将得到所有的项目。

a. 要获取个别项目的元数据,修改items为items(n)(n)就是你要查看的特定项目的编号。

b. 要查看文件的元数据,添加file/(例如, itemsn/file/)。

c. 要下载文件,附加$value(例如,itemsn/file/$value

4. 你可以使用lists/GetByTitle(‘Documents’)l来代替上述的格式,,然后API将返回相同的结果。

处理文件夹和文件

1. 文件往往是放在文件夹中的,,你可能需要深入分析文件夹结构;或者你可能想在用户界面(UI)上显示文件夹的结构和文件的。使用下面的REST调用,你可以以更合乎逻辑的方式使用文件夹和文件而不仅仅上面的格式所显示的”items(n)”通过使用URL的相对路径然后列举出文件夹里面的文件时非常方便的关于权威的读/写指导,请参阅MSDN上的Working with folders and files with REST

2. 假设SkyDrive的文件结构如图3所示,在这里你有两个相同级别的文件夹和文件。

                                   Figure 3. SkyDrive file structure with folders and documents at the same level

                               图3. 同级别的文件夹和文件的SkyDrive文件结构

 

3. 要检索所有的文件夹,你可以使用带有GetFolderByServerRelative的URL格式l:https://YourO365DomainHere-my.sharepoint.com/personal/
YourUserName_YourO365DomainHere_onmicrosoft_com/_api/web/

往这个URL后面追加GetFolderByServerRelativeUrl(‘/personal/YourUserName_YourO365DomainHere_onmicrosoft_com/Documents’)/folders/.这样将会返回所有文件夹。随后可以为每个文件夹使用ServerRelativeURL属性继续“深入”每个文件夹直到你到达它的根节点。

Figure 4. ServerRelativeUrl property of a folder

                               图4. 文件夹的ServerRelativeUrl属性

 

4. 同样,如果你想返回一个文件夹中所有文件的元数据,只需要将folders/替换为files/文件。所有的文件将被列举出来。

Figure 5. ServerRelativeUrl property of a file

                                    图5. 文件的ServerRelativeUrl属性

 

然后,如果你想检索文件的话,你可以使用GetFileByServerRelativeUrl的URL格式这个URL格式就是在上面的第一部分所述的,并向URL附加上/$value。

上述的URL格式演示的是如何构建方便地在浏览器中使用REST调用。然而,你可以很容易的在你的代码中实现这些URL的格式。

例如,如果你为你的SharePoint开发一个应用程序,该应用程序可以调用到用户的MySite网站收集和使用REST或者CSOM访问SkyDrive Pro中的文件。

REST调用获取文件的方法是:

https://YourO365DomainHere-my.sharepoint.com/personal/
    YourUserName_YourO365DomainHere_onmicrosoft_com/_api/web/
    GetFileByServerRelativeUrl(‘/personal/YourUserName_YourO365DomainHere_onmicrosoft_com/
        Documents/Shared%20with%20Everyone/myDocument.docx’)/$value

对已登录的用户以编程方式获取SkyDrive Pro URL,你可以打电话到用户配置文件服务中心:

https://YourO365DomainHere-my.sharepoint.com/_api/
    SP.UserProfiles.PeopleManager/GetMyProperties/personalURL/

记住,你的SharePoint应用程序需要在应用程序清单中申请一系列正确的权限来访问的SkyDrive Pro的内容—例如,AllSites.Read—如果使用用户配置文件服务:Social.Read。当您向访问控制服务中心(ACS)请求指令时,请确保您有正确的接受者。为了调用SkyDrive的专业,你需要一个指令,其目标接受者是https://YourO365DomainHere-my.sharepoint .com/。并且记得编码在URL中所有查询的参数。

这篇文章中没有详细说明CSOM的调用,但是CSOM相对应的功能实现可参见CSOM, JSOM, and REST API Index。其他有价值的资源是一些文章,关于如何使用CSOMJSOM完成基本操作,和 开始使用SharePoint 2013 REST的。

最后,关于示例代码,可以下载Apps for SharePoint sample pack,它提供了在C#中,REST和JavaScript的例子。它包括了很多有用的例子,其中包括:

No Comments - Leave a comment

Leave a comment


Welcome , today is 星期六, 2017 年 02 月 25 日