上一篇我们搭建好了SkyDrive APIs调用的环境。详细地址:SkyDrive APIs——用户登录和APP授权(2)

本篇主要实现文件和文件夹的读取和操作。

在上一篇中我们完成APP实现用户的登录和完成相关Scope(权限)的授权。当经过了这两步骤的必须操作之后, 我们就可以实现对这“云端网盘”的远端操纵了。

 

首先,来看看LiveConnectClient类的成员:

                     

上图是这个类的全部成员了。 下面对其分部讲解

第①:Session字段,构造函数需要这个字段来完成对LiveConnectClient类的实例构造。这个Session对象如何来呢?  在上一篇中的SessionChanged事件中,如果

e.Status == LiveConnectSessionStatus.Connected 那么我们就可以拿这个事件参数来完成实例构造了:LiveConnectClient liveClient = new LiveConnectClient(e.Session);

第②:回调事件。

第③:这是这个类的所有公开的操作方法。 单从字面上其实就很一目了然了,覆盖了获取、下载、上传、更新、删除、移动、赋值。不得不说微软已经把事情封装到这份上了,还有什么好说的,直接拿去用吧,连基础的HTTP请求都免了。结合②中注册回调事件,调用方法,可以搞定收工了。你会写吗——So easy!

 

不过, 等等。 注意到有个地方没有讲到。那就是参数部分。 上图的所有方法都带有string类型的path,那么,这个参数到底该传什么内容进去呢?

这里就要用到REST的相关概念了。

定义和概念我就不说了,也表达不出什么好的概念,直接上维基百科找:http://zh.wikipedia.org/wiki/REST

 

一句话的理解说:就是使用HTTP协议,请求REST的路径,然后解析返回来的json对象,转换成对象实体或集合,然后进行数据绑定,整个过程就是这样了。

来段代码:

Var liveClient = new LiveConnectClient(e.Session);	//实例化对象
                    liveClient.GetCompleted += new EventHandler<LiveOperationCompletedEventArgs>(liveClient_GetCompleted);  //注册回调事件
                liveClient.GetAsync("/me");	//调用异步方法,请求用户基本资料

        void liveClient_GetCompleted(object sender, LiveOperationCompletedEventArgs e)
        {
            if (e.Error == null)
            {
                JsonManager.Default.ResolveFolder(e.RawResult); //处理json
                foreach (var key in e.Result.Keys)
                {
                    var result = e.Result[key];
                }

                string first_name = string.Empty;
                string last_name = string.Empty;
                if (e.Result.ContainsKey("first_name"))
                {
                    first_name = (string)e.Result["first_name"];
                }
                if (e.Result.ContainsKey("last_name"))
                {
                    last_name = (string)e.Result["last_name"];
                }
                infoText.Text = string.Format("Welcome, {0} {1}", first_name, last_name);
            }
            else
            {
                infoText.Text = "Get a error for call apis." + e.Error.Message;
            }
        }

  

这里有全部详细的REST请求路径和返回的JSON字符串 请参考:http://msdn.microsoft.com/en-us/library/live/hh243648.aspx#top

 

如果要获取用户基本信息,需要用户授予的权限scope是”wl.basic”;需要请求的REST路径是”/me”,即可。

如果要获取用户全部相册目录,需要用户授予的权限scope是"wl.signin","wl.basic","wl.photos"

”;需要请求的REST路径是” /me/albums”这些都可以对号入座的。

 

所有的理论概念,讲到这里其实都差不多了。 我在这里只是抛砖引玉,因为很多东西都只是隔着一纸纱糊,捅破了其实很简单,只是因为繁琐碎。希望能对你有帮助。

下篇开始,我将会使用MVVM模式一步步打造SkyDrive For Windows Phone APP.敬请关注。

 

posted on 2012-06-03 18:19  黑择明  阅读(1648)  评论(1编辑  收藏  举报