您如何对单个Skydrive帐户进行身份验证,而不是要求用户提供凭据?

Jon*_*ett 5 php oauth-2.0 onedrive

我有一个客户希望将SkyDrive用作网站的云存储.该网站不会要求网站的用户为他们的SkyDrive帐户显示他们的文件,而是网站的所有者将在SkyDrive中存储一些文件,并希望与登录到他的网站的用户共享.我的问题是,如何直接从网站的后端PHP代码向SkyDrive API发送凭据?

Live Connect上的API文档(http://msdn.microsoft.com/en-us/library/live/hh243647.aspx)似乎专注于向用户呈现登录表单以将用户的凭据发送到服务.再说一遍,这不是我想要的.该网站的用户不应该做任何事情,只能转到该页面,他们将看到从SkyDrive帐户镜像的文件.凭据应存储在服务器上,并在用户请求页面时发送.

我问了一个类似于Google Docs的问题(如何在没有oAuth身份验证的情况下连接到Google Calendar API?).该问题的答案是设置一个临时脚本来获取可以反复使用以进行身份​​验证的刷新令牌.我试过了,它确实有效.但是,我不确定刷新令牌的持续时间以及相同的方法是否适用于SkyDrive API.

编辑:在进行更多研究之后,Live Connect Docs(http://msdn.microsoft.com/en-us/library/live/hh826540)说:

用户提供同意后,Live Connect会为您的应用提供特殊代码或访问令牌,使您的应用可以使用他或她同意的用户信息部分.通常,此访问令牌大约需要一个小时.在此时间结束后,您的应用将无法再使用用户的信息 - 它必须要求用户再次完成登录和同意过程.要解决此问题,您可以要求用户同意wl.offline_access范围.这为您的应用程序提供了一个额外的代码,称为刷新令牌,您的应用程序可以在需要时使用它来获取新的访问令牌 - 即使在用户注销后 - 通常最长可达一年.但是,用户可以随时撤消您应用的访问权限.如果用户选择撤销对您应用的同意,则无法使用相应的访问权限或刷新令牌 - 您的应用必须再次要求用户完成登录和同意过程.

因此,看起来刷新令牌持续一年.这意味着我可以安装一些东西来获取刷新令牌,存储它,并在每个页面请求上使用刷新令牌获取访问令牌并显示数据.但是,每年一次,我必须更新此客户端的刷新令牌并存储它.这听起来是对的,这是最好的方法吗?

Jan*_*ger 1

OAuth 2 有一个专门用于此目的的特殊流程,称为Client Credentials Grant

谷歌已经通过服务帐户客户端证书实现了这一点,正如您的其他问题的答案中提到的那样

但是,到目前为止,Microsoft 尚未实现 该流程,因此目前最好的方法是使用已用于 Google Docs 的解决方法。