Onedrive API 与 LiveSDK

Onedrive API vs LiveSDK

我正在为 WP8.1 开发,可能会移植到其他平台。 我想集成 OneDrive 功能,但是,我无法理解 LiveSDK(来自 NuGet 包)和 OneDrive API.

之间的区别

看来Microsoft对此完全没有交流,我真的不明白为什么。据我了解,LiveSDK 是旧的,将被 OneDrive API 取代,但 LiveSDK 似乎使用起来简单得多,我无法理解他们的逻辑.. . 最重要的是两者最近都更新了(4 月为 LiveSDK)。

所以我的问题是

基于面向未来的展望,我会选择 OneDrive API,但我主要担心的是:

OneDrive API 上登录是否比在 Live SDK 上登录更容易? (下面的临时解决方案)

目前,我已经能够使用一个按钮和三行代码使用 LiveSDK 登录,完全不需要用户输入,其中 AuthenticateAndContinue 方法由 OneDrive API 打开一个 Webcontrol 并需要手动输入登录名和密码。

最后我使用了 LiveSDK 身份验证并使用 OneDrive API 提供的访问令牌。从我的角度来看,这不是一个干净的方法,但我无法使 AuthenticateAndContinue 方法起作用(我在登录后收到 404 错误答案)。

如果有人有更好的解决方案,我愿意接受建议:)

[从问题中提取的解决方案以脱离 "unanswered" 堆栈]

综上所述,我目前的方法如下:

  1. 使用 LiveSDK 进行身份验证API
  2. 从那里使用会话 cookie 和 OneDrive API

简化代码如下:

下面的方法允许静默登录,只有第一次需要用户手动验证允许程序使用其 Live 帐户。

不需要用户提供任何密码

var authClient = new LiveAuthClient();
var authResult = await authClient.LoginAsync(new string[] {  
        "wl.signin", "onedrive.readwrite", "onedrive.appfolder"});

if (authResult.Session == null)
    throw new InvalidOperationException("You need to sign in and give consent to the app.");

var Connection = new ODConnection("https://api.onedrive.com/v1.0", 
    new MicrosoftAccountAuthenticationInfo() { TokenType = "Bearer", 
    AccessToken = odArgs.Session.AccessToken });

它不像我想要的那样干净(使用 2 个不同的 SDK),但它有效:)