如何使用桌面Word以编程方式打开位于OneDrive中的文件?

时间:2016-12-22 13:47:04

标签: php ms-word office365 onedrive

我在 OneDrive 中有.docx个文件。如果我点击它,它会在 Word Online 上打开。然后,有一个按钮显示Edit in Word,可在桌面 Word 中打开当前文件(当然,您必须提供凭据)。

使用 OneDrive API ,我可以从我的PHP应用程序中直接在 Word Online 中打开文件(因为它提供了文件URL),但现在我我试图在 Word Offline 中直接打开它(然后,Word会向用户提示凭据)。

TL; DR:我正在尝试重现Edit in Word按钮的行为。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

要从webapp在桌面Word中打开文件,您必须使用ms-word协议:

https://msdn.microsoft.com/en-us/library/office/dn906146.aspx

看起来像是:ms-word:ofe|u|<url to file>。 您应该能够通过将上面的网址设置为href标记的a属性或通过调用window.open() JS函数来触发打开文件。

但是您需要直接网址(不是网址或生成的访问链接),而且我所关注的API并不提供这样的网址,因此您必须自己构建它。

OneDrive(个人)的直接链接如下所示: https://d.docs.live.net/{drive-id}/{file-path}

您可以通过调用API来获取您的驱动器ID(我将使用Microsoft Graph,因为我只熟悉这个)。

致电https://graph.microsoft.com/v1.0/me/drive/,作为回复,您将获得一个包含id财产的JSON,以及您所需的驱动ID。

如果您不想使用Graph API但OneDrive API,我猜唯一可以改变的部分是graph.microsoft.com,它变为api.onedrive.com(但我不确定,请查看这里有更多信息 - https://dev.onedrive.com/getting-started.htm)。

接下来,您需要在OneDrive中提供文件路径。如果file位于根目录中,则直接url to file可能如下所示: https://d.docs.live.net/xxxxxxxxxx/Document1.docx

基本上全部,现在您应该能够使用ms-word:ofe|u|https://d.docs.live.net/xxxxxxxxxx/Document1.docx在桌面Word中打开文件。