rclone 无管理员 Onedrive 使用

移植工程:https://github.com/nickfox-taterli/rclone

编译好的版本:Linux(64位) / Windows(64位) 

特别警告:SharePoint传输效率低于Graph API,如无必要,尽量使用标准API,并且不支持世纪互联.

如何进行无管理员OneDrive绑定,首先无管理员OneDrive是不可以进行API授权的,但是依然有办法获取access_token,即可以进行对接.

无管理Office特征,登录Office子号时会显示管理图标的,都是无管理状态.

进入OneDrive页面,打开F12调试工具,搜索关键字RenderListData,可以找到driveAccessToken和driveUrl两项,这是关键.

由于没有API,配置文件需要自己写,比如我提取到的信息如下.

.driveAccessToken: "access_token=eyJ0........D0"
.driveUrl: "https://alumnibentley-my.sharepoint.com/_api/v2.0/drives/b!....-...."

我可以编辑配置文件~/.config/rclone/rclone.conf新增一个字段,比如我新增一个alumnibentley的字段.

[alumnibentley]
type = onedrive
token = {"access_token":"eyJ0........D0","token_type":"Bearer","refresh_token":"","expiry":"2020-06-30T15:22:06.648584+08:00"}
drive_id = b!....-....
noadmin = true
tenant_url = https://alumnibentley-my.sharepoint.com/_api
drive_type = business

注意expiry时间并不准确,你可以随便写个未来的时间,因为过期时间实际上并不确定,一旦过期,只能到网页上重新获取,然后就可以玩了~

重点!权限不够怎么办?

这里是请求token的权限,如果不够,我们可以自己写POST请求,也是一样的,最高可以获取到0x17FFFF(即1572863),每一位(Bit)代表一个一个权限.

参考代码(Python)

import requests

url = "https://alumnibentley-my.sharepoint.com/personal/admin_alumni_bentley_edu/_api/web/GetListUsingPath(DecodedUrl=@a1)/RenderListDataAsStream?@a1='/personal/admin_alumni_bentley_edu/Documents'&TryNewExperienceSingle=TRUE"

payload = '''{
    "parameters": {
        "__metadata": {
            "type": "SP.RenderListDataParameters"
        },
        "RenderOptions": 1572863,
        "AllowMultipleValueFilterForTaxonomyFields": true,
        "AddRequiredFields": true
    }
}'''
headers = {
  'Accept': 'application/json;odata=verbose',
  'Content-Type': 'application/json;odata=verbose',
  'Cookie': 'rtFa=[RTFA]; FedAuth=[FEDAUTH]'
}

response = requests.post(url, headers=headers, data = payload)

print(response.text)

测试:

目前测试主流上传下载创建目录同步功能是OK的,另外,世纪互联不会产出access_token,只有变化较为多的FedAuth和rtFa,有需要的话,用这两个参数也可以进行API操作.

《rclone 无管理员 Onedrive 使用》有2个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注