SharePoint365 接入简要笔记
文章目录
- 一、前言
- 二、概念划分
- 1、网站/新闻
- 2、公共目录
- 3、关注目录/文件
- 4、签入/签出
- 三、API 操作(sharePoint v1)(针对个人登录用户)
- 1、前置准备
- 2、获取登录token
- 2.1、模拟页面登录的模式获取SecurityToken
- 请求体:
- 正常响应:
- 非正常响应:
- 2.2、获取登录后的cookies
- 请求体:
- 响应头:
- 2.3、获取真正的access token
- 3、通用Api操作
- 类型说明:
- 3.1、获取当前公共目录结构
- 3.2、获取当前公共目录下的所有文件
- 3.3、获取指定文件讯息
- 3.4、下载指定文件
- 3.5、获取关注内容
- 3.6、获取关注内容数量
- 3.7、获取关注内容公共目录结构
- 3.8、其他关注内容操作(通用)
- 四、API操作(graph)(针对business acount)
- 1、创建应用
- 2、通过graph浏览器选择适合的api
- 3、基于应用客户端密码获取的token
- 4、涉及的角色权限
- 1.1 用户部分
- 1.2 网站部分
- 5、通用Api部分
- Api筛选技巧:
- 5.1、查看租户讯息
- 5.2 、指定租户讯息
- 5.3、获取公共根目录
- 5.4、获取公共根目录的驱动器
- 5.5、获取根目录下的驱动器文件夹列表
- 5.6、获取指定根目录下的驱动器文件夹内的文件列表
- 5.7、获取用户关注的网站讯息
- 5.8、关注网站的根目录驱动器
- 5.7、关注网站的其他操作
一、前言
整体
SharePoint
接入主体主要围绕文件的内容问题,最终目的是将SharePoint涉及的文件内容整合打包迁移,所以这里主要关注的内容为文件相关的内容部分,其他有涉及的会列出相关讯息。
二、概念划分
1、网站/新闻
SharePoint
这里展示上通常分类为这两个内容。①新闻服务于网站,也就是依托于网站。
②新闻的素材可以直接从文档库提取。
③文档库可以涵盖你所知道的绝大数内容。
2、公共目录
为组织默认的一个文档目录, 一个商业级的Acount ,都会为其分配一个公共网站目录。
通常我们获取的相对地址的时候,都是基于
Shared Documents
目录即可
3、关注目录/文件
主要是已经授予读取权限的网站,我们便可以获取拥有查看权限的文件内容。
①通常为关注整个网站
②可以关注文件/目录
4、签入/签出
其实相当于我们线程阻塞一样,也可以说锁。
签出: 将文档单独拎出,避免其他人操作,你获取了单独修改的权限。
签入: 放回原位,重新释放线程锁。
三、API 操作(sharePoint v1)(针对个人登录用户)
相关接口地址参考:
①通用端点地址: https://docs.microsoft.com/zh-cn/sharepoint/dev/sp-add-ins/get-to-know-the-sharepoint-rest-service?tabs=csom
②社交方面端点地址: https://docs.microsoft.com/zh-cn/sharepoint/dev/general-development/following-people-and-content-rest-api-reference-for-sharepoint#bk_GetFollowersFor
1、前置准备
为了测试数据接口可行性,建议:
①预备一个可行性business Acount。
②公共主页上创建至少一个文件夹,且文件夹内任意放一个文件。
③创建一个新网站,同样创建文件夹及文件。
2、获取登录token
基于这个模式获取的token,需要关闭Azure默认的安全模式。
具体: Azure Active Directory —> 属性 —> 管理安全默认值(设置为否)
2.1、模拟页面登录的模式获取SecurityToken
Endpoint: https://login.microsoftonline.com/extSTS.srf
Method: POST
请求头:
Accept: application/json;odata=verbose
请求体内参数说明:
UserName: 此处填入用户名
Password: 此处填入密码
SharPointAdress: sharepoint 地址,通常为{{domain}}.sharepoint.com
请求体:
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"xmlns:a="http://www.w3.org/2005/08/addressing"xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"><s:Header><a:Action s:mustUnderstand="1">http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue</a:Action><a:ReplyTo><a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address></a:ReplyTo><a:To s:mustUnderstand="1">https://login.microsoftonline.com/extSTS.srf</a:To><o:Security s:mustUnderstand="1"xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><o:UsernameToken><o:Username>{{UserName}}</o:Username><o:Password>ringofor6?</o:Password></o:UsernameToken></o:Security></s:Header><s:Body><t:RequestSecurityToken xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust"><wsp:AppliesTo xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"><a:EndpointReference><a:Address>{{SharPointAdress}}</a:Address></a:EndpointReference></wsp:AppliesTo><t:KeyType>http://schemas.xmlsoap.org/ws/2005/05/identity/NoProofKey</t:KeyType><t:RequestType>http://schemas.xmlsoap.org/ws/2005/02/trust/Issue</t:RequestType><t:TokenType>urn:oasis:names:tc:SAML:1.0:assertion</t:TokenType></t:RequestSecurityToken></s:Body>
</s:Envelope>
正常响应:
定位
BinarySecurityToken
标签即可
<wsse:BinarySecurityToken Id="Compact0" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">t=EwDwAk6hBwAUSmCQQlqR5MKj0PCkIZAplWMov+YAARQxiXpNh71Wjd3/I8j7dYLc6v+mmYPhv+MXYG6EHgHk+sgAo23kodTVN5siS9jH7Kc4df29Q4sliRmlCWkXNdEVgrZDgwg60g8Sfu7fwlFBQNEOYhVZltmCUr5VZgU4onTpHAbg9bkiW78tiXUrGD45kpJN7xk+9TpTv10ilolPxhnGh7twe756cBMwUkmSH1d/JL2ddfzXT4nVkVG4IHUavXCIF43CPBYwIJOZZwBseDIqsA9JWxJvwSK+c+Cxoww/y32uZ8flLMKy4WeumgboADqYGxGig/EY0RJDus7DD14ZqB+h9F1H26GSEjc21gH5WtqG4h2990XUSEi2Gw0DZgAACBypP6+DimiUwAH1We5a17tELMluinkxCUxgJZQ043oSTCrqE/lnmjmfkCO1A8LJcdEkQkXb5kP0ecuS9AaOOKQT7hL1Ne1m01WNPJbjOXbXjSX648wiP7sx1s8AfSihrVyJyuyLwTFr1QJZtKZ3fMgL4wYanP6jYaPCzMilL0ef5vq2AatBkaeQbgx65D9S4yXprQneLmZbrlFXt4WYNxsMBka8PU0RrRBeVepKTf+lmVz6+VrInAmWsiCkSyJ5NF9QwtKmgF0KLtWpCO4bzNMakANUHiwS6cQ3aZQ8ZFFUcbJf/TIRWTtWOHUA06PmU5WDvszwS9PBrwb02lqnAP3a2zzq8RRlnsQdpdujfOEv/3wWAx/1iH/FrEWkDy0okEv3tDZjz+ZlMtBMb48Y07WyeWyO+wAKV+PGlhEP9fT4rev/tIa82RX3xf1dRkKsOylK8uhX929tiqNxY7t72JoZG5euarEXljDuLAsGVc7lz2obkJalHIKn9LYqGsxXpkZerk7+R3oQySE4kotyT2iat9+QTvm62+ghRdjF7F90N72NTuPvZAcrICRsOzgRCY0WomZ+SxktXNhSl6mwUEPSQWQ1zRFTUbtELgI=&p=</wsse:BinarySecurityToken>
非正常响应:
通常为出现
53003:Access has been blocked by Conditional Access policies
需要关闭默认安全设置,参考第三点第2小点
2.2、获取登录后的cookies
利用securityToken请求这个端点,主要是需要获取请求响应中的cookies,为下一步获取真正的token作准备
Endpoint: https://{{domain}}.sharepoint.com/_forms/default.aspx?wa=wsignin1.0
Method: POST
请求体参数说明:
直接将第一步获取的
BinarySecurityToken
填入请求体即可
请求体:
{{BinarySecurityToken}}
响应头:
我们需要从响应头中获取
FedAuth
2.3、获取真正的access token
利用上一步获取的cookies值作为请求附带即可
Endpoint: https://{{domain}}}.sharepoint.com/_api/contextinfo
Method: POST
正常响应:
定位标签:
FormDigestValue
就是我们需要定位的token
<?xml version="1.0" encoding="utf-8"?>
<d:GetContextWebInformation xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml" m:type="SP.ContextWebInformation"><d:FormDigestTimeoutSeconds m:type="Edm.Int32">1800</d:FormDigestTimeoutSeconds><d:FormDigestValue>xx9D3C71AF83CA01671A6ECE8A7547BB4A56E33412BCC7541ADB0E8B01B02BE022948F6A341BA8AA0F190DE35EB485124EAB58265D084BF75E8D78B42F5FF8504,13 Jul 2022 02:22:21 -0000</d:FormDigestValue><d:LibraryVersion>16.0.22629.12003</d:LibraryVersion><d:SiteFullUrl>https://{{domain}}.sharepoint.com</d:SiteFullUrl><d:SupportedSchemaVersions m:type="Collection(Edm.String)"><d:element>14.0.0.0</d:element><d:element>15.0.0.0</d:element></d:SupportedSchemaVersions><d:WebFullUrl>https://{{domain}}.sharepoint.com</d:WebFullUrl>
</d:GetContextWebInformation>
3、通用Api操作
前置条件: 获取了access token
类型说明:
我们可以根据接口参数中返回的__metadata-> type 来判断
SP.Folder: 文件夹类型
SP.File: 文件类型
Collection(SP.Social.SocialActor): 社交类内容数据
3.1、获取当前公共目录结构
Endpoint: https://{{domain}}.sharepoint.com/_api/web/
GetFolderByServerRelativePath
(decodedUrl=‘Shared Documents’)Method: GET
请求头:
Authorization:{{access token}}
Accept: application/json;odata=verbose
响应示例:
基于示例边幅过大,简略说明,并不会全部展示
{"d": {"__metadata": {..."type": "SP.Folder"},..."Exists": true,"IsWOPIEnabled": false,"ItemCount": 5,"Name": "Shared Documents","ProgID": null,"ServerRelativeUrl": "/Shared Documents","TimeCreated": "2022-06-25T15:20:17Z","TimeLastModified": "2022-07-11T07:25:38Z","UniqueId": "e0cebed2-b84a-485d-903e-ab6acb4f77ca","WelcomePage": ""}
}
3.2、获取当前公共目录下的所有文件
Endpoint: https://{{domain}}.sharepoint.com/_api/web/
GetFolderByServerRelativePath
(decodedUrl=‘Shared Documents’)/FilesMethod: GET
请求头:
Authorization:{{access token}}
Accept: application/json;odata=verbose
响应内容:
为方便测试结果:已经在公共目录下创建了一个文件:test.jpg
{"d": {"results": [{ "__metadata": {..."type": "SP.File"},"CheckInComment": "","CheckOutType": 2,"ContentTag": "{6B757991-6665-4D33-A96D-A64852C0C6BF},1,2","CustomizedPageStatus": 0,"ETag": "\"{6B757991-6665-4D33-A96D-A64852C0C6BF},1\"","Exists": true,"IrmEnabled": false,"Length": "13582","Level": 1,"LinkingUri": null,"LinkingUrl": "","MajorVersion": 1,"MinorVersion": 0,"Name": "test.jpg","ServerRelativeUrl": "/Shared Documents/test.jpg","TimeCreated": "2022-07-08T07:25:26Z","TimeLastModified": "2022-07-08T07:25:26Z","Title": null,"UIVersion": 512,"UIVersionLabel": "1.0","UniqueId": "6b757991-6665-4d33-a96d-a64852c0c6bf"}]}
}
3.3、获取指定文件讯息
Endpoint: http://{{domain}}.sharepoint.com/_api/web/GetFileByServerRelativePath(decodedUrl=‘/Shared Documents/test.jpg’)
Method: GET
请求头:
Authorization:{{access token}}
Accept: application/json;odata=verbose
响应内容:
{"d": {"__metadata": {..."type": "SP.File"},"CheckInComment": "","CheckOutType": 2,"ContentTag": "{6B757991-6665-4D33-A96D-A64852C0C6BF},1,2","CustomizedPageStatus": 0,"ETag": "\"{6B757991-6665-4D33-A96D-A64852C0C6BF},1\"","Exists": true,"IrmEnabled": false,"Length": "13582","Level": 1,"LinkingUri": null,"LinkingUrl": "","MajorVersion": 1,"MinorVersion": 0,"Name": "test.jpg","ServerRelativeUrl": "/Shared Documents/test.jpg","TimeCreated": "2022-07-08T07:25:26Z","TimeLastModified": "2022-07-08T07:25:26Z","Title": null,"UIVersion": 512,"UIVersionLabel": "1.0","UniqueId": "6b757991-6665-4d33-a96d-a64852c0c6bf"}}
}
3.4、下载指定文件
Endpoint: http://{{domain}}.sharepoint.com/_api/web/GetFileByServerRelativePath(decodedUrl=‘/Shared Documents/test.jpg’)/$value
请求头:
Authorization:{{access token}}
其实就是指令符:$value
3.5、获取关注内容
Endpoint: https://{{domain}}.sharepoint.com/_api/social.following/my/followed(types=15)
type值是组合值:用户 = 1,文档 = 2,站点 = 4,标签 = 8。允许按位组合
Method: GET
请求头:
Authorization:{{access token}}
Accept: application/json;odata=verbose
响应内容:
为方便测试结果:已经创建了一个网站:demo,并于网站下创建了目录demo 及文件test.jpg
{"d": {"Followed": {"__metadata": {"type": "Collection(SP.Social.SocialActor)"},"results": [{"ActorType": 2,"CanFollow": true,"ContentUri": "https://{{domain}}.sharepoint.com/sites/demo","GroupId": "00000000-0000-0000-0000-000000000000","Id": "8.ac0932d648894a7aac1369374c81b689.1d3eddd53113474aa8a84db493774f6d.ac0932d648894a7aac1369374c81b689.00000000000000000000000000000000","IsFollowed": true,"Name": "demo","Status": 0,"TagGuid": "00000000-0000-0000-0000-000000000000","Title": "demo","Uri": "https://{{domain}}.sharepoint.com/sites/demo"},{"ActorType": 1,"CanFollow": false,"ContentUri": "https://{{domain}}.sharepoint.com/Shared Documents/demo/test.txt","GroupId": "00000000-0000-0000-0000-000000000000","Id": "2.ceac4859fce64a628f11637bf654ded7.7b41bbd446cb4244a80eedb78e934726.277493411bb64172b1d0b7741c413aa9.107cab05d2084824a8503c9a451848cd","IsFollowed": true,"Name": "test.txt","Status": 0,"TagGuid": "00000000-0000-0000-0000-000000000000","Uri": "https://{{domain}}.sharepoint.com/Shared Documents/demo/test.txt"}]}}
}
3.6、获取关注内容数量
Endpoint: https://{{domain}}.sharepoint.com/_api/social.following/my/followedcount(types=15)
type值是组合值:用户 = 1,文档 = 2,站点 = 4,标签 = 8。允许按位组合
Method: GET
请求头:
Authorization:{{access token}}
Accept: application/json;odata=verbose
{"d": {"FollowedCount": 2}
}
3.7、获取关注内容公共目录结构
与获取本身公共目录差异仅仅是增添
关注目录的相对地址
(为了便于展示示例,这里存在一个网站demo,已关注。)EndPoint: https://{{domain}}.sharepoint.com/sites/demo/_api/web/GetFolderByServerRelativePath(decodedUrl=‘Shared Documents’)
Method: GET
请求头:
Authorization:{{access token}}
Accept: application/json;odata=verbose
响应内容
响应内容与
3.1
结构一致
3.8、其他关注内容操作(通用)
其实与公共目录相差异的部分就是:增添
关注目录的相对地址
①获取关注内容的目录所有文件
Endpoint:
{{SharePointAdress}}/
sites/demo/_api/web/
GetFolderByServerRelativePath(decodedUrl=‘Shared Documents’)/Files②获取关注内容文件
Endpoint:
{{SharePointAdress}}/
sites/demo/_api/web/
GetFolderByServerRelativePath(decodedUrl=‘Shared Documents/test.jpg’)③下载关注内容文件
Endpoint:
{{SharePointAdress}}/
sites/demo/_api/web/
GetFolderByServerRelativePath(decodedUrl=‘Shared Documents/test.jpg’)/$valueMethod: GET
请求头:
Authorization:{{access token}}
Accept: application/json;odata=verbose (下载部分不需要这个请求头)
四、API操作(graph)(针对business acount)
1、创建应用
为执行graph 的api调用,需要创建一个应用先。参考步骤
2、通过graph浏览器选择适合的api
基于graph我们可以直接进入微软的api浏览器来选择合适的api
参考鏈接: https://developer.microsoft.com/zh-cn/graph/graph-explorer
api参考鏈接: https://docs.microsoft.com/zh-cn/graph/api/overview?view=graph-rest-1.0
3、基于应用客户端密码获取的token
Endpoint: https://login.microsoftonline.com/{{tenant}}/oauth2/v2.0/token
{{tenant}}对应租户id
Method: Post
Content-Type: application/x-www-form-urlencoded
示例使用sharePoint客户端密码:
机密id: ce6caa92-15b4-46bb-b77e-233ad64d3d03
值: Wac8QHRMiq-.UVWO_fkF6_LV144YPMyf_Iuc-O
参数名 | 描述说明 |
---|---|
client_id | 客户端id |
scope |
范围,默认其实https://graph.microsoft.com/.default
|
client_secret | 客户端密码 |
grant_type |
固定值client_credentials
|
示例响应
{"token_type": "Bearer","expires_in": 3599,"ext_expires_in": 3599,"access_token": "eyJ0eXAiOiJKV1QiLCJub25jZSI6I..."
}
4、涉及的角色权限
1.1 用户部分
User.Read.All、User.ReadWrite.All、Directory.Read.All、Directory.ReadWrite.All
1.2 网站部分
Sites.Read.All、Sites.ReadWrite.All
5、通用Api部分
Api筛选技巧:
可以利用
$select
参数来筛选返回的讯息,参数以,
分割。提供示例:5.1
5.1、查看租户讯息
Endpoint: https://graph.microsoft.com/v1.0/users
Method: GET
请求头:
Authorization: {{access token}}
正常响应数据:
{"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users","value": [{"businessPhones": ["15902051304"],"displayName": "LinRingo","givenName": "Ringo","id": "1cc865b9-bf0d-46c0-89c5-850c01efffff","mail": "LinRingo@Sample.onmicrosoft.com","preferredLanguage": "zh-CN","surname": "Lin","userPrincipalName": "LinRingo@Sample.onmicrosoft.com"}]
}
筛选示例
Endopoint:
https://graph.microsoft.com/v1.0/users?$select=displayName,mail
{"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users(displayName,mail)","value": [{"displayName": "LinRingo","mail": "LinRingo@Sample.onmicrosoft.com",}]
}
5.2 、指定租户讯息
需要存在一个租户,用以调用接口
举例租户: LinRingo@Sample.onmicrosoft.com
Endpoint: https://graph.microsoft.com/v1.0/users/{{user-id | user-mail}}
Method: GET
请求头:
Authorization: {{access token}}
参数值说明:
#参照5.1 返回讯息 {{user-id}}: 对应 id ,也就是 1cc865b9-bf0d-46c0-89c5-850c01efffff # Endpoint: https://graph.microsoft.com/v1.0/users/1cc865b9-bf0d-46c0-89c5-850c01efffff {{user-mail}}: 对应mail,也就是 LinRingo@Sample.onmicrosoft.com # Endpoint: https://graph.microsoft.com/v1.0/users/LinRingo@Sample.onmicrosoft.com
5.3、获取公共根目录
通常指的是获取当前商业用户的公共目录
Endpoint: https://graph.microsoft.com/v1.0/sites/root
Method: GET
请求头:
Authorization: {{access token}}
正常响应:
{"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#sites/$entity","createdDateTime": "2022-07-08T06:46:13.347Z","description": "","id": "sample.sharepoint.com,ceac4859-fce6-4a62-8f11-637bf654de37,7b41bbd4-46cb-4244-a80e-edb78e9356","lastModifiedDateTime": "2022-07-18T02:17:09Z","name": "","webUrl": "https://sample.sharepoint.com","displayName": "Communication site","root": {},"siteCollection": {"hostname": "sample.sharepoint.com"}
}
5.4、获取公共根目录的驱动器
通常指的是公共根目录下的网站列表
Endpoint: https://graph.microsoft.com/v1.0/sites/{{hostname | site-id }}/drives
Method: GET
请求头:
Authorization: {{access token}}
参数值说明:
#参照5.3 返回讯息 {{hostname }}: 对应 hostname ,也就是 sample.sharepoint.com # Endpoint: https://graph.microsoft.com/v1.0/sites/sample.sharepoint.com/drives {{site-id}}: 对应id,也就是 sample.sharepoint.com,ceac4859-fce6-4a62-8f11-637bf654de37,7b41bbd4-46cb-4244-a80e-edb78e9356 # Endpoint: https://graph.microsoft.com/v1.0/sites/sample.sharepoint.com,ceac4859-fce6-4a62-8f11-637bf654de37,7b41bbd4-46cb-4244-a80e-edb78e9356/drives
正常响应:
{"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#drives","value": [{"createdDateTime": "2022-06-25T15:20:17Z","description": "","id": "b!WUiszub8YkqPEWN79lTe19S7QXvLRkRCqA7tt46TRyZJkULnXAN7Q6hrVWfffK","lastModifiedDateTime": "2022-07-11T07:25:38Z","name": "Documents","webUrl": "https://sample.sharepoint.com/Shared%20Documents","driveType": "documentLibrary",...}]
}
5.5、获取根目录下的驱动器文件夹列表
Endpoint: https://graph.microsoft.com/v1.0/sites/{{hostname | site-id }}/drives/{{drive-id}}/root/children
Method: GET
请求头:
Authorization: {{access token}}
参数值说明:
#参照5.3 返回讯息 {{hostname }}: 对应 hostname ,也就是 sample.sharepoint.com{{site-id}}: 对应id,也就是 sample.sharepoint.com,ceac4859-fce6-4a62-8f11-637bf654de37,7b41bbd4-46cb-4244-a80e-edb78e9356#参考5.4 返回讯息 {{drive-id}}:对应id,也就是 b!WUiszub8YkqPEWN79lTe19S7QXvLRkRCqA7tt46TRyZJkULnXAN7Q6hrVWfffK
正常响应:
为了返回数据,创建了文件夹 ha、demo。
{"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#sites('sample.sharepoint.com')/drives('b%21WUiszub8YkqPEWN79lTe19S7QXvLRkRCqA7tt46TRyZJkULnXAN7Q6hrVWAm8ss')/root/children","value": [{"createdDateTime": "2022-07-11T07:25:38Z","eTag": "\"{63E6A53A-0179-4795-984D-09BC54387E35},1\"","id": "01DXFOSYR2UXTGG6IBSVDZQTIJXRKDQ7RV","lastModifiedDateTime": "2022-07-11T07:25:38Z","name": "demo","webUrl": "https://sample.sharepoint.com/Shared%20Documents/demo","cTag": "\"c:{63E6A53A-0179-4795-984D-09BC54387E35},0\"","size": 0,...},{"createdDateTime": "2022-07-08T10:13:23Z","eTag": "\"{ACF076D2-3311-49FA-A9AC-A295AF71FAA6},1\"","id": "01DXFOSYWSO3YKYEJT7JE2TLFCSWXXD6VG","lastModifiedDateTime": "2022-07-08T10:13:23Z","name": "ha","webUrl": "https://sample.sharepoint.com/Shared%20Documents/ha","cTag": "\"c:{ACF076D2-3311-49FA-A9AC-A295AF71FAA6},0\"","size": 13582,...},]
}
5.6、获取指定根目录下的驱动器文件夹内的文件列表
Endpoint: https://graph.microsoft.com/v1.0/sites/{{hostname | site-id }}/drives/{{drive-id}}/root/children/{{ folder}}/children
Method: GET
请求头:
Authorization: {{access token}}
参数值说明:
#参照5.3 返回讯息 {{hostname }}: 对应 hostname ,也就是 sample.sharepoint.com{{site-id}}: 对应id,也就是 sample.sharepoint.com,ceac4859-fce6-4a62-8f11-637bf654de37,7b41bbd4-46cb-4244-a80e-edb78e9356#参考5.4 返回讯息 {{drive-id}}:对应id,也就是 b!WUiszub8YkqPEWN79lTe19S7QXvLRkRCqA7tt46TRyZJkULnXAN7Q6hrVWfffK#参考5.5 返回讯息 {{folder}}: 对应返回值的 name,比如 demo 或 ha
正常响应:
Endpoint: https://graph.microsoft.com/v1.0/sites/{{hostname | site-id }}/drives/{{drive-id}}/root/children/{{ folder}}/children
这里{{folder}}采用了demo,同时为了展示效果,为demo文件夹下创建了text.txt文件
{"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#sites('sample.sharepoint.com')/drives('b%21WUiszub8YkqPEWN79lTe19S7QXvLRkRCqA7tt46TRyZJkULnXAN7Q6hrVWAmfff')/root/children('demo')/children","value": [{"@microsoft.graph.downloadUrl": "https://sampleforrobot.sharepoint.com/_layouts/15/download.aspx?..","createdDateTime": "2022-07-11T07:41:41Z","eTag": "\"{27749341-1BB6-4172-B1D0-B7741C413AA9},2\"","id": "01DXFOSYSBSN2CPNQ3OJA3DUFXOQOECOVJ","lastModifiedDateTime": "2022-07-11T07:42:22Z","name": "test.txt","webUrl": "https://sample.sharepoint.com/Shared%20Documents/demo/test.txt","cTag": "\"c:{27749341-1BB6-4172-B1D0-B7741C413AA9},2\"","size": 0,}]
}
5.7、获取用户关注的网站讯息
通常我们需要根据用户讯息才能获取用户关注的内容,剩下的文件方面的操作与通用部分一致。
Endpoint: https://graph.microsoft.com/v1.0/users/{{user-id}}/followedSites
Method: GET
请求头:
Authorization: {{access token}}
参数值说明:
#参考 5.1 返回讯息 {{user-id}}:对应用户id 1cc865b9-bf0d-46c0-89c5-850c01efffff
正常响应:
为了正常响应讯息,创建了网站fwaf,并且关注
{"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#sites","value": [{"description": "","id": "sample.sharepoint.com,2deb3c6f-aedf-4466-bc3b-47ef5494a9f4,a41ed731-aee3-48ff-a810-7f63f72c99f3","lastModifiedDateTime": "2022-07-08T07:39:20Z","webUrl": "https://sample.sharepoint.com/sites/fwaf","displayName": "fwaf","sharepointIds": {"listItemId": "1","siteId": "2deb3c6f-aedf-4466-bc3b-47ef5494a9f4","siteUrl": "https://sample.sharepoint.com/sites/fwaf","webId": "a41ed731-aee3-48ff-a810-7f63f72c99f3"},"siteCollection": {"hostname": "sample.sharepoint.com"}}]
}
5.8、关注网站的根目录驱动器
Endpoint: https://graph.microsoft.com/v1.0/sites/{{host-name}}:/sites/{{site-name}}:/drives
Method: GET
请求头:
Authorization: {{access token}}
参数值说明:
#参考5.7 返回讯息 {{host-name}}: 对应siteCollection - hostname ,即 sample.sharepoint.com{{site-name}}: 对应displayName ,即 fwaf
正常响应:
{"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#drives","value": [{"createdDateTime": "2022-06-25T15:25:14Z","description": "","id": "b!bzzrLd-uZkS8O0fvVJSp9DHXHqTjrv9IqBB_Y_csmfOV2z-BBfvxTow89Tm_d47a","lastModifiedDateTime": "2022-07-08T09:21:30Z","name": "文档","webUrl": "https://sample.sharepoint.com/sites/fwaf/Shared%20Documents","driveType": "documentLibrary",}]
}
5.7、关注网站的其他操作
其实这里已经与上面获取自己公共操作方式一样
①获取关注根目录驱动器下的文件列表
Endpoint: https://graph.microsoft.com/v1.0/sites/{{host-name}}/drives/{{drive-id}}/root/children
②获取关注根目录驱动器下的文件夹内的文件列表:
Endpoint: https://graph.microsoft.com/v1.0/sites/{{hostname | site-id }}/drives/{{drive-id}}/root/children/{{ folder}}/children
SharePoint365 接入简要笔记相关推荐
- 2022年最新《谷粒商城开发教程》:2 - vue 简要笔记
Java工程师的进阶之路 代码地址 1 - 构建工程篇 2 - vue 简要笔记 3 - 商品服务-API-三级分类 4 - 商品服务-API-品牌管理 5 - 商品服务-API-属性分组 目录 一. ...
- gromacs manual_GROMACS蛋白配体分子动力学模拟结果分析简要笔记
0. 引言 本文以前文(https://zhuanlan.zhihu.com/p/149862369)为基础,对蛋白配体复合物分子模拟体系的结果进行一系列的粗浅分析,本文记述了简要的分析方法. 1 M ...
- Linux device tree 简要笔记
第一.DTS简介 在嵌入式设备上,可能有不同的主板---它们之间差异表现在主板资源不尽相同,比如I2C.SPI.GPIO等接口定义有差别,或者是Timer不同,等等.于是这就产生了BSP的一 ...
- LTE/NR用户接入过程笔记
接入过程流程相对比较多变,总的大类包含基于竞争的随机接入和基于非竞争的随机接入.过程虽然多变,但是如果理解了接入过程中需要解决的问题,就能更好的理解不同流程中的差异点. 接入过程需要解决的主要问题如下 ...
- 1022 - 快手短视频广告主接入实践笔记
概述 对于不熟悉快手短视频推广,广告主接入的有很多坑,给我的整体感觉就是技术实现简单,但是方式上有很多坑,希望分享出来给大家解惑,也留给自己作为技术实践中的经验总结. 第一步是企业去快手投放管理后台开 ...
- 微信支付 postman_小刘同学微信支付接入全笔记
走上"码农"这条路已经快一年半啦,做过不少的Demo和项目,也接触了不少的业务场景,8000w的大数据量处理,QPS500+的并发优化,也算是在开发的这条路上踏出了入门向前的步伐: ...
- 京东JOS API 接入使用笔记
商户开设了京东店.淘宝店,最近打算使用京东物流,需要使用京东仓库(京东店的订单使用京仓发货,淘宝等其他店使用京东云仓)发货,所以得从自家的ERP与京东沧海(ECLP)API对接,实现收发存. 首先得在 ...
- 简要笔记-CNN网络
以下是CNN网络的简要介绍. 1 CNN的发展简述 CNN可以有效降低传统神经网络(全连接)的复杂性,常见的网络结构有LeNet.AlexNet.ZFNet.VGGNet.GoogleNet.ResN ...
- 深度学习发展简要笔记
来源:非正式组织 概要:在Yann LeCun.Yoshua Bengio和Geoffrey Hinton三巨头nature深度学习综述<deep learning>文章中提到,这段期间神 ...
- iOS数据存储简要笔记
1. 数据存储常用的方式(1)XML 属性列表(plist)归档 (2)preference(偏好设置) (3)NSKeyedArchiver归档(NSCoding) (4) SQLite3 ...
最新文章
- 【中文模板】Latex如何写中文文档
- 计算机组成与结构实验箱,HQFC-B1计算机组成和数字电路实验箱
- 算法族的集中管理——策略模式
- IE下 c00ce56e 错误竟然是nginx 字符设置的问题
- 三种场景不建议放在关系型数据库中
- 网络交换机功能和原理详解
- [vue] vue和angular有什么区别呢?
- java求n个分数之和_N个快速提升分数的学习方法
- SQL 错误代码汇总
- opencv前景检测
- python基础学习笔记1
- 对外汉语偏误语料库_哇,9大对外汉语必备语料库,每个都很有“性格”!!...
- codeblocks下载-安装和使用
- vue.js开发微信公众号加载缓慢出现的白页问题-随笔
- CRM系统之数据库设计
- 音频处理——G711标准详解
- OpenGL ES 2.0 for Android教程(三):编译着色器并绘制到屏幕
- d3 企业图谱 仿天眼查 企查查
- esp8266 mesh 组网
- ui设计现状与意义_浅述UI设计在中国的现状
热门文章
- 【西藏攻略+游记】十一,我们去西藏(1)攻略
- canvas系列 — canvas常用API介绍
- 台式计算机没有任务栏,电脑任务栏不见了怎么恢复 电脑任务栏怎么设置并排显示...
- word去掉万恶的域代码
- usb转232串口线驱动android,prolific usb转串口驱动下载
- 思维导图怎么画简单又漂亮?思维导图制作方法分享
- 【目标检测】2020年遥感图像目标检测综述
- 想要利用定时器的定时功能输出一个占空比 0.5(一半高电平一半低电平)的方波,并在示波器中显示出来,但是用proteus仿真示波器没有反应 大家帮我看看哪错了
- 线性代数 --- LU分解(Gauss消元法的矩阵表示)
- UE激活(亲测有效,通过注册机激活)