Office365 Graph API 抓取OneDrive/Sharepoint文件信息

1,使用全局管理员登录Office365 Azure AD注册Graph API应用,具体参考官网链接https://docs.microsoft.com/zh-cn/graph/auth-register-app-v2
2,在API权限添加委托应用---以下权限实际上没什么用处,需要将运行graph api的账号添加为被读取Onedrive站点的管理员
Sites.Read.All
Sites.ReadWrite.All
Sites.Search.All
User.Read.All
2.1 设置OneDrive站点管理员

    $SiteUrl = "https://tenant-my.sharepoint.com/personal/username_domain_com/"
    connect-sposervice -Url "https://tenant-admin.sharepoint.com/" -Credential Get-Credential
    $sSecondaryODFBAdmin ="[email protected]"
    Set-SPOUser -Site $SiteUrl -LoginName $sSecondaryODFBAdmin -IsSiteCollectionAdmin $true

3,在证书和客户端,创建客户端密码
4,生成Token函数

function Graph_Auth
{
$clientID = "客户端ID(36位)"
$tenantName = "tenant.onmicrosoft.com"
$ClientSecret = "客户端密码"
$Username = "拥有应用权限的账号"
$Password = "以上账号密码"
$ReqTokenBody = @{
    Grant_Type    = "Password"
    client_Id     = $clientID
    Client_Secret = $clientSecret
    Username      = $Username
    Password      = $Password
    Scope         = "https://graph.microsoft.com/.default"
}
$TokenResponse = Invoke-RestMethod -Uri "https://login.microsoftonline.com/$TenantName/oauth2/v2.0/token" -Method POST -Body $ReqTokenBody
$headerParams = @{
"Content-Type" = "application/json"
"Authorization"="$($TokenResponse.token_type) $($TokenResponse.access_token)"}
return $headerParams
}

5,如果invoke-restmethod运行时报无法连接到服务器错误,可能是https证书问题,运行以下函数忽略证书

function Ignore-SelfSignedCerts {
add-type @"
using System.Net;
using System.Security.Cryptography.X509Certificates;
public class TrustAllCertsPolicy : ICertificatePolicy {
public bool CheckValidationResult(
ServicePoint srvPoint, X509Certificate certificate,
WebRequest request, int certificateProblem) {
return true;
}}
"@

[System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
}

6,抓取OneDrive文件信息

#具体格式参照Search-UnifiedAuditLog抓取的Onedrive日志返回。
$UserId = ""                                #邮箱地址
$SiteUrl= ""                                #OneDrive链接
$SourceRelativeUrl = ""            #文件相对地址
$SourceFileName= ""               #文件名称
$SourceFileExtension= ""        #文件属性
Ignore-SelfSignedCerts
$headerParams = Graph_Auth
$SourceRelativeUrl = $SourceRelativeUrl -replace "^Documents/",""
$SourceFileExtension = $SourceFileExtension + "$"
if($SourceRelativeUrl -notmatch $SourceFileExtension){
if($SourceRelativeUrl -eq "Documents"){
$filepath = $SourceFileName
}else{
$filepath = $SourceRelativeUrl + "/" + $SourceFileName
}
}else{
$filepath = $SourceRelativeUrl
}
$url = "https://graph.microsoft.com/v1.0/users/"+ $UserId + "/drive/root:/" + $filepath
$result =Invoke-RestMethod -UseBasicParsing -Headers $headerParams -Uri $url -Method Get -Verbose

原文地址:https://blog.51cto.com/6293080/2481080

时间: 2024-08-29 09:49:19

Office365 Graph API 抓取OneDrive/Sharepoint文件信息的相关文章

百度音乐API抓取

百度音乐API抓取 前段时间做了一个本地音乐的播放器 github地址,想实现在线播放的功能,于是到处寻找API,很遗憾,不是歌曲不全就是质量不高.在网上发现这么一个APIMRASONG博客,有“获取榜单,搜索歌词,下载地址,专辑”信息等等接口. 后来发现有些接口使用起来不是很方便,比如获取专辑信息,只能得到歌曲列表的id信息,所以自己决定用fiddler来对百度音乐安卓客户端抓包. 下面是一系列的接口: 一. 关键词建议: GET: http://tingapi.ting.baidu.com/

利用RCurl抓取电影团购信息

1 抓取的网址是360团购 http://tuan.360.cn/bei_jing/c_0.html?kw=电影&pageno=1#tuanFilter 2 利用firefox的FireBug插件分析其源代码,如下所示: "//*/h3[@class='desc']" 匹配电影院名称 "//*/span [@class='discount']" 匹配原价 "//*/span [@class='price']" 匹配优惠价 "//

通过调用Twitter API抓取Twitter数据

国内研究weibo的人比较多,资料也相对较多,但是twitter的资料相对较少.今天简单说一下twitter api的使用.最近一小需求,采集含有指定关键词的twitter数据,瞬间想到写个爬虫来抓取,后来突然想到twitter应该有open api可用.使用了vpn翻墙之后简单的了解了twitter.com,决定直接使用 twitter api.由于twitter的open api现在也是基于oauth协议的,因此使用流程和国内一些社区比如说人人网,weibo的api的过程类似. 要想使用tw

从当当客户端api抓取书评到词云生成

看了好几本大冰的书,感觉对自己的思维有不少的影响.想看看其他读者的评论.便想从当当下手抓取他们评论做个词云.想着网页版说不定有麻烦的反爬,干脆从手机客户端下手好了.果其不然,找到一个书评的api.发送请求就有详情的json返回,简直不要太方便... 要是对手机客户端做信息爬取,建议安装一个手机模拟器. 思路: 在安装好的手机模拟器设置好用来抓包的代理,我用的charles.记得安装证书,不然抓不了https的数据包. 然后安装当当客户端,打开进到书评页面. 然后成功在charles找到了这个接口

百度地图api抓取坐标实例

<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>百度地图API的使用</title> <!-- 百度地图API--> <script src="http://api.map.baidu.com/api?v=1.2" type="text/javascript"></scri

你可以不知道原因,但是不能停止尝试。httplook抓取路由配置界面信息

由于实验室项目要求,需要实现动态控制路由配置信息,我们知道,买到路由之后需要访问:http://192.168.1.1 页面进行路由配置.但是为了实现动态配置,不需要人手工操作,甚至定时任务配置的时候,就需要进一步研究对路由配置的相关操作了. 需要实现的目标是像一些商家提供的带web认证的Wifi服务,如飞机场的CMCC接入,你连接Wifi热点后还不能上网,他会自动跳转到web认证页面实施认证,通过之后才能实现上网.但是我们希望通过服务器主机自动更改添加web认证账户,比如像商户可以发放免费上网

你可以不知道原因,但是,我们不能停止努力。httplook抓取路由配置界面信息

因为实验室的项目要求,需要动态控制路由的配置信息,我们知道.路由选择需要购买的访问后,:http://192.168.1.1 路由配置页面.配置,不须要人手工操作.甚至定时任务配置的时候,就须要进一步研究对路由配置的相关操作了. 须要实现的目标是像一些商家提供的带web认证的Wifi服务,如飞机场的CMCC接入,你连接Wifi热点后还不能上网,他会自己主动跳转到web认证页面实施认证.通过之后才干实现上网.可是我们希望通过server主机自己主动更改加入web认证账户,比方像商户能够发放免费上网

网络爬虫: 从allitebooks.com抓取书籍信息并从amazon.com抓取价格(2): 抓取allitebooks.com书籍信息及ISBN码

这一篇首先从allitebooks.com里抓取书籍列表的书籍信息和每本书对应的ISBN码. 一.分析需求和网站结构 allitebooks.com这个网站的结构很简单,分页+书籍列表+书籍详情页. 要想得到书籍的详细信息和ISBN码,我们需要遍历所有的页码,进入到书籍列表,然后从书籍列表进入到每本书的详情页里,这样就能够抓取详情信息和ISBN码了. 二.从分页里遍历每一页书籍列表 通过查看分页功能的HTML代码,通过class="current"可以定位当前页码所在span标签,此s

Python开发网络爬虫抓取某同城房价信息

前言: 苦逼的我从某某城市换到另一个稍微大点的某某城市,面临的第一个问题就是买房,奋斗10多年,又回到起点,废话就不多说了,看看如何设计程序把某同城上的房价数据抓取过来. 方案:方案思路很简单,先把网页内容获取下来,通过一定规则对内容解析,保存成想要的格式 难点是对网页的解析,是一个比较细致的活,必须边输出,边调试. 具体实现: 获取网页内容: def get_page(url):    headers = {        'User-Agent': r'Mozilla/5.0 (Window