如何提供凭据来更新我的OneDrive文件?

时间:2014-09-24 14:51:41

标签: c# live-connect-sdk

我想覆盖OneDrive上的文件。

我认为以下是正确的方法,但我不知道在哪里为OneDrive帐户提供登录凭据。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Live;
using System.IO;
using System.Threading.Tasks;



namespace OneDriveUpdater
{
    class Program
    {
        static void Main(string[] args)
        {   

            LiveConnectClient liveClient = new LiveConnectClient(this.session);

            FileStream fs = new StreamReader(@"c:\status.txt");

            var result = await liveConnectClient.UploadAsync("", "STATUS", fs, OverwriteOption.Overwrite);


        }      

    }
}

2 个答案:

答案 0 :(得分:1)

文档有点稀疏,但是如果你看的话那里的信息就在那里。我没有对此进行测试 - 它完全基于文档,但看起来大致正确。

创建LiveAuthClient个实例,并调用LoginInitialize方法进行身份验证(似乎Initialize将以静默方式进行身份验证,但Login将必要时显示对话框。

无论选择哪种方法,任务完成时的返回值都是LiveLoginResult个实例。它具有连接状态的属性,以及LiveConnectSession类型的.Session属性。

.Session值是您传递给LiveConnectClient构造函数所需的值。

答案 1 :(得分:0)

尝试使用此代码首次登录用户:

using Microsoft.Live;
private LiveConnectSession _session = null;

public async Task AuthenticateUserThroughLive()
{
  try
  {
      LiveAuthClient LCAuth = new LiveAuthClient("<Redirect Domain>");

      LiveLoginResult loginResult = await LCAuth.LoginAsync(new string[] { "wl.signin", "wl.basic", "wl.skydrive", "wl.skydrive_update" });
      if (loginResult.Status == LiveConnectSessionStatus.Connected)
      {
          this.LiveSession = loginResult.Session;
      }
  }
  catch (LiveAuthException)
  {
     // Handle exceptions.
  }
}

将重定向域替换为在Live Connect Management站点中设置应用程序的方式,并仅在Login()方法中传入所需的Scopes。 Session属性包含您与Live Connect通信所需的身份验证令牌,授予用户允许您通过Scopes访问OneDrive。

PS:我刚刚写了一篇关于相关主题的文章。如果相关,请查看http://developer.telerik.com/featured/live-connect-integration-mobile-apps/

谢谢!