虽然我可以在OneDrive for Business上成功列出与我共享的文件,但我仍然遇到一个尝试下载任何此类文件的python程序。
我的OneDrive应用程序具有权限:Files.ReadWriteAll
。
我可以使用Python SDK和HTTP REST API成功列出与我共享的文件。
例如,使用来自完全授权的OneDrive SDK client
实例的访问令牌,我直接构造HTTP请求。这允许我成功列出我的共享文件。
url = client.base_url + '/drive/oneDrive.sharedWithMe'
response = requests.get(url, headers={'Authorization': 'bearer
{}'.format(client.auth_provider.access_token)})
(base_url
的格式为https://{org-name}-my.sharepoint.com//_api/v2.0/
)
响应内容json为我提供了一个项目列表及其remoteItems。
data = json.loads(response.content)
{'@odata.context': 'https://{myorg}-my.sharepoint.com/_api/v2.0/$metadata#items',
'value': [{'@odata.editLink': 'drive/items/1234',
'remoteItem': {'createdBy': {'user': {'displayName': 'name'}},
'id': '12345',
'lastModifiedDateTime': '2017-05-16T10:20:00Z',
'parentReference': {'driveId': '12345'},
但是,当我将远程项目插入drives/{}/items{}
请求
drive_id = data['value'][0]['remoteItem']['parentReference']['driveId']
remote_item = data['value'][0]['remoteItem']['id']
url = client.base_url + '/drives/{}/items/{}'.format(drive_id, remote_item)
response = requests.get(url,
headers={'Authorization': 'Bearer {}'.format(client.auth_provider.access_token)})
我总是得到404
{"error":{"code":"itemNotFound","message":"The resource could not be found."}}
。
这些是响应标题:
{
'Cache-Control': 'private, max-age=0',
'Transfer-Encoding': 'chunked',
'Content-Type': 'application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8',
'Expires': 'Wed, 03 May 2017 09:42:27 GMT',
'Last-Modified': 'Thu, 18 May 2017 09:42:27 GMT',
'Server': 'Microsoft-IIS/8.5',
'X-SharePointHealthScore': '0',
'X-SP-SERVERSTATE': 'ReadOnly=0',
'ODATA-VERSION': '4.0',
'SPClientServiceRequestDuration': '173',
'SPRequestDuration': '339',
'X-AspNet-Version': '4.0.30319',
'SPRequestGuid': 'cbd1f29d-707d-4000-e8b4-e8ef24e0143e',
'request-id': 'another id',
'Strict-Transport-Security': 'max-age=31536000',
'X-FRAME-OPTIONS': 'SAMEORIGIN',
'X-Powered-By': 'ASP.NET',
'MicrosoftSharePointTeamServices': '16.0.0.6504',
'X-Content-Type-Options': 'nosniff',
'X-MS-InvokeApp': '1; RequireReadOnly',
'P3P': 'CP="ALL IND DSP COR ADM CONo CUR CUSo IVAo IVDo PSA PSD TAI TELo OUR SAMo CNT COM INT NAV ONL PHY PRE PUR UNI"',
'Date': 'Thu, 18 May 2017 09:42:26 GMT'
}
我对任何解决方案都很满意。它可以直接使用OneDrive SDK或手动创建HTTP请求。
所有帮助表示赞赏。
由于