我目前正在开发一种Windows服务,它将检查和更新Excel文件并将其上传到选定的 Cloud 存储 - SharePoint或OneDrive . 整个过程应该是全自动的,无需任何用户交互 - 所有必需的信息(用户名,密码等)都是配置文件的一部分 .
除OneDrive部分外,一切顺利 . 我无法找到登录并上传到此 Cloud 存储的全自动解决方案 . 我知道Microsoft Live SDK,但是它对非WinPhone和-WinStore应用程序的支持减少了,据我所知,它总是要求用户输入用户名,密码(webbrowser组件) .
第二个选项是SkyDriveClientAPI(link here),但此API不再起作用(如问题中所述) .
有没有办法在没有用户交互的情况下使用Live SDK,或者您是否有其他方式的其他建议?
3 回答
This is partly achievable
正如其他答案所述, one drive requires user authentication ,这使得全自动解决方案变得不可能 .
However an almost automatic solution is possible ,意味着可以创建一个应用程序,需要一次登录(首次激活时)和登录后,用户对正在运行的应用程序的授权,从那时起应用程序将能够自动工作(上传,下载,文件夹创建,直接链接到上传的文件等....),即使应用程序关闭,机器重新启动,这将继续工作 .
从一个驱动器连接中取消应用程序的唯一方法是注销应用程序(可以自动实现) .
这可以通过使用LIVE sdk(桌面)并遵循单点登录指南来实现,您很可能需要访问以下范围:
wl.basic
wl.signin
wl.skydrive_update
wl.offline_access
检查一个驱动器开发中心:
window desktop apps
Single sign-on for apps and websites
为了实现这种行为,我建议遵循以下步骤:
下载实时桌面源代码
探索ApiExplorer示例(Live SDK Desktop Code + ApiExplorer code sample) - 这将向您展示如何登录,注销,下载和上传内容 .
在使用该示例构建基本演示应用程序之后:
增强您的应用程序以使用单点登录功能,
增强您的应用程序以刷新其身份验证令牌(因此会话不会超时等)
您可以找到有关其API here的信息 . Microsoft的One Drive真正旨在确保安全并尊重用户隐私 . 这就是平台中存在如此多权限控制的原因 . 他们真正强调的是,在没有用户表示许可的情况下,不要让孤立的文件或应用程序滥用自动/上传过程 . 要直接从其API中澄清,其明确的指导原则如下:
上面的特定摘录来自here,它与One Drive的API直接相关 .
您可以使用共享的One Drive文件夹绕过用户的进程 . 哪个会自动上传/同步数据 . 但是,如果您使用
File.Move
或File.Copy
而未明确告知用户此文件将存储在您的共享文件中以便由One Drive上传,则会陷入困境 . 那么你可能违反了这些条款 .您还必须担心用户相关的权限/帐户才能实现该方法 .
OneDrive提供用于上载文件的API . 但是他们的guidelines的一个限制是,所有通过API上传都必须是用户启动或接受使用 . 因此,您无法将文件作为全自动过程上载到OneDrive .
一种解决方案可能就像评论中提出的gooly一样 . 将文件复制到本地OneDrive文件夹,让OneDrive应用程序负责上传 .