我想覆盖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);
}
}
}
答案 0 :(得分:1)
文档有点稀疏,但是如果你看的话那里的信息就在那里。我没有对此进行测试 - 它完全基于文档,但看起来大致正确。
创建LiveAuthClient
个实例,并调用Login
或Initialize
方法进行身份验证(似乎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/。谢谢!