OneDrive Python SDK-用于获取嵌入式URL的create_link

时间:2019-01-23 12:56:24

标签: python onedrive

OneDrive云提供了一种功能,该功能可通过内部可公开访问的URL获取嵌入式iFrame标签。 我正在尝试使用Python OneDrive SDK

实现相同的目的

文档页面上显示了各种功能,例如上载,下载,重命名文件等。 我要在这里实现的目标是创建一个嵌入式iFrame并作为响应来获取它。像this之类的东西。

SDK的一个类中有一个名为create_link的函数。该函数位于存在诸如upload之类的其他函数的同一类中。 onedrivesdk/request/item_request_builder.pyitem_builder_request.py 还有一个type参数可以使用。我相信embed是我们将通过的论点。 但是,当我执行client.item(drive='me', id='fileid').create_link('embed')时,其结果与在this页上的Graph API时所显示的结果不同。 我该怎么办?

我的目的是基本上获得一个公共URL到我通过其上传的Excel工作表。 python代码。此URL不应要求登录。

def create_link(self, type):
        """Executes the createLink method

        Args:
            type (str):
                The type to use in the method request          

        Returns:
            :class:`ItemCreateLinkRequestBuilder<onedrivesdk.request.item_create_link.ItemCreateLinkRequestBuilder>`:
                A ItemCreateLinkRequestBuilder for the method
        """
        return ItemCreateLinkRequestBuilder(self.append_to_request_url("action.createLink"), self._client, type)

我现在拥有的是上传文件后的item对象。 enter image description here

1 个答案:

答案 0 :(得分:1)

在您的示例中,缺少post方法,该方法基本上向服务器提交了POST请求。

因此,用于创建嵌入链接的查询:

POST /me/drive/items/{item-id}/createLink
Content-Type: application/json

{
  "type": "embed"
} 

可以通过Python OneDrive SDK执行,如下所示:

result = client.item(drive='me', id=item_id).create_link("embed").post()
print(result.link.web_url)

其中item_id是驱动器项目的ID