rclone 无管理员 Onedrive 使用

/ 9评 / 0

移植工程: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操作.

  1. 啦啦啦说道:

    这个感觉比webdav要好用很多,大佬有测试过token的有效期是多少吗

  2. pu说道:

    大佬,这个支持世纪互联onedrive和https://futtsu.teracloud.jp/dav/Notesharepoint吗

  3. endedman说道:

    大佬,目前rclone1.54官方已经正式支持世纪互联了,请问能否把无管理员 Onedrive 使用的特性合入最新版呢?

  4. zzjy说道:

    为什么我用F12,然后搜索Ren就没有这个选项?

  5. Max说道:

    多谢。
    我想用rclone复制别人给我分享的sharepoint文件夹的内容,但是别的tenant下的东西rclone没法直接挂载,WebDAV也不行。用了这个教程的内容可以了,不过还需要对rclone做一些改动,比如增加root_folder_id的支持。

回复 啦啦啦 取消回复

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