我在 OneDrive 中有.docx
个文件。如果我点击它,它会在 Word Online 上打开。然后,有一个按钮显示Edit in Word
,可在桌面 Word 中打开当前文件(当然,您必须提供凭据)。
使用 OneDrive API ,我可以从我的PHP应用程序中直接在 Word Online 中打开文件(因为它提供了文件URL),但现在我我试图在 Word Offline 中直接打开它(然后,Word会向用户提示凭据)。
TL; DR:我正在尝试重现Edit in Word
按钮的行为。我怎么能这样做?
答案 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中打开文件。