首页 文章

C#登录并上传到OneDrive而无需用户交互

提问于
浏览
17

我目前正在开发一种Windows服务,它将检查和更新Excel文件并将其上传到选定的 Cloud 存储 - SharePoint或OneDrive . 整个过程应该是全自动的,无需任何用户交互 - 所有必需的信息(用户名,密码等)都是配置文件的一部分 .

除OneDrive部分外,一切顺利 . 我无法找到登录并上传到此 Cloud 存储的全自动解决方案 . 我知道Microsoft Live SDK,但是它对非WinPhone和-WinStore应用程序的支持减少了,据我所知,它总是要求用户输入用户名,密码(webbrowser组件) .

第二个选项是SkyDriveClientAPI(link here),但此API不再起作用(如问题中所述) .

有没有办法在没有用户交互的情况下使用Live SDK,或者您是否有其他方式的其他建议?

3 回答

  • 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

    检查一个驱动器开发中心:

    为了实现这种行为,我建议遵循以下步骤:

    在使用该示例构建基本演示应用程序之后:

    • 增强您的应用程序以使用单点登录功能,

    • 增强您的应用程序以刷新其身份验证令牌(因此会话不会超时等)

  • 4

    您可以找到有关其API here的信息 . Microsoft的One Drive真正旨在确保安全并尊重用户隐私 . 这就是平台中存在如此多权限控制的原因 . 他们真正强调的是,在没有用户表示许可的情况下,不要让孤立的文件或应用程序滥用自动/上传过程 . 要直接从其API中澄清,其明确的指导原则如下:

    与OneDrive交互的应用程序与OneDrive交互的应用程序指南必须符合以下原则:仅在响应明确的用户请求或选择时将文件上载到OneDrive . 您的应用必须始终确保用户有意选择将任何新数据保存到OneDrive . 如果用户没有明确选择上传这些文件,应用不得自动将文件上传到OneDrive . 以下是符合应用程序的一些示例:显示“上传到OneDrive”或“在OneDrive上共享”按钮的应用程序,用户在每次上传照片,视频,文档或其他文件之前必须单击该按钮 . 文档编辑应用程序,要求用户最初单击“上传到OneDrive”按钮,以便应用程序可以在以后保存该文档而无需进一步的用户交互 . 以下是不合格应用程序的一些示例:自动上传到OneDrive的应用程序,用于添加到用户设备上特定位置的任何文件 . 自动将文件或文件夹备份到OneDrive的应用程序 . 将OneDrive用于擅长的事情 . OneDrive包括用于高质量文档查看和编辑以及创建和共享精美相册的功能 . 如果可能,让您的应用程序利用这些功能 . 不要破坏对OneDrive的信任 . 多年来OneDrive已经上市,用户已经开始信任它了 . 保持这种信任至关重要,您的应用程序不得通过执行用户不期望的事情来破坏它,尤其是在数据隐私方面 . 以下是符合应用程序的一些示例:将文档或照片上载到OneDrive的应用程序,仅限用户访问权限 . 当用户向其内容发送链接时,用户会警告用户存储在OneDrive上的任何人都可以读取相关文件 . 以下是不合格应用程序的示例:默认情况下,OneDrive中的所有共享文件均可公开访问的应用程序,但未向用户明确传达此行为 .

    上面的特定摘录来自here,它与One Drive的API直接相关 .

    您可以使用共享的One Drive文件夹绕过用户的进程 . 哪个会自动上传/同步数据 . 但是,如果您使用 File.MoveFile.Copy 而未明确告知用户此文件将存储在您的共享文件中以便由One Drive上传,则会陷入困境 . 那么你可能违反了这些条款 .

    您还必须担心用户相关的权限/帐户才能实现该方法 .

  • 2

    OneDrive提供用于上载文件的API . 但是他们的guidelines的一个限制是,所有通过API上传都必须是用户启动或接受使用 . 因此,您无法将文件作为全自动过程上载到OneDrive .

    一种解决方案可能就像评论中提出的gooly一样 . 将文件复制到本地OneDrive文件夹,让OneDrive应用程序负责上传 .

相关问题