无法在OneDrive上使用python进行业务下载与我共享的文件

时间:2017-05-16 15:56:23

标签: python onedrive

虽然我可以在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请求。

所有帮助表示赞赏。

由于

0 个答案:

没有答案