上一篇我们搭建好了SkyDrive APIs调用的环境。详细地址:SkyDrive  APIs——搭建环境(1)

这一篇展示一个调用示例。

在工具箱中找到SignInButton控件,并拖放至界面。(如果你的工具箱中没有SignInButton控件,请参考我的前一篇),XAML代码如下(略去以精简):

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
            <!--<Button Content="log in" HorizontalAlignment="Left" VerticalAlignment="Top" Click="Button_Click" />
            <Button x:Name="btnLiveGet" Content="Get" HorizontalAlignment="Left" VerticalAlignment="Top" Click="btnLiveGet_Click" Margin="0,96,0,0" />-->
            <my:SignInButton Height="72" HorizontalAlignment="Left" Margin="42,60,0,0" x:Name="btnSignIn" VerticalAlignment="Top" Width="160"
                             Branding="Windows" ClientId="Your Client ID here" TextType="Login" Scopes="wl.signin wl.basic" SessionChanged="btnSignIn_SessionChanged" />
            <TextBlock x:Name="infoText" VerticalAlignment="Center" HorizontalAlignment="Left" FontSize="{StaticResource PhoneFontSizeLarge}" />
        </Grid>

  

关键属性:

1. ClientId属性。这个属性是你在Live Connect Developer Center申请并创建的APP实例的ClientId(格式如:00000000603E0BFE),你需要这个KEY才能启动APIs,否则会报异常。

 

2. Scopes属性。 完全的documents请参考:http://msdn.microsoft.com/en-us/library/live/hh243646.aspx

说明:其实就是对于用户的授权权限。 终端用户要通过你的APP进行登录和一系列的操作,那么他肯定有权知道你的APP会使用到他的哪些权限。这个就像是从marketplace中下载一个APP时,会提示软件会使用那些capabilities一样。这个配置文件位于WMAppManifest.xml文件中。   从上一篇文章中我们看到了SkyDrive只是LIVE CONNECT APIs中的一部分,那么就需要skydrive这一部分的权限。  打个比方:就好像酒店房间, 你要想进入哪个房间,你首先得去申请到进入那个房间的房卡,然后才能进去,那么这个房卡就对应了一个scope,这样说应该很明白了吧。

Scopes="wl.signin wl.basic"多个scope使用空格“ ”分开即可。   不过微软建议从用户体验来说,别滥用scope, 你只需你的APP必须要用到的scopes即可。

 

3. Branding属性。 这个属性只是用于显示登录按钮的图标样式。有几个可选值:

Windows:  Skydrive:

Messenger:  Hotmail:

 

4. SessionChanged事件。

private void btnSignIn_SessionChanged(object sender, Microsoft.Live.Controls.LiveConnectSessionChangedEventArgs e)
        {
            if (e.Status == LiveConnectSessionStatus.Connected)
            {
                liveClient = new LiveConnectClient(e.Session);
                infoText.Text = "Signed in.";
                liveClient.GetCompleted += new EventHandler<LiveOperationCompletedEventArgs>(liveClient_GetCompleted);
                liveClient.GetAsync("me");
            }
            else
            {
                infoText.Text = "Not signed in.";
                liveClient = null;
            }
        }

说明:设个断点调试你会发现,当一进入到这个DEMO页面后SessionChanged就被触发了。我们可以根据e.Status状态来判断是否登录成功。

通过单击来进入到授权登录页面

这个时候会要求用户输入live 账号进行登录。 当输入完用户名和密码后,点击登录并验证通过后,就进入到了授权界面:

单击底下的“是”按钮后,即用户同意授权后。 SessionChanged再次被触发,我们看下e.Status的状态变成了Connected,到此,用户登录,并授权完成。 接下来你就可以在用户授权的范围下做你想做的事情了——酒店房间已开,你想怎么方便请便。

 

至此, 本篇已完成,是不是觉得其实很简单。下篇将会讲述如何进行SkyDrive文件(夹)的操作。

 转载请说明出处:http://www.cnblogs.com/mehale/archive/2012/05/25/2517941.html

 

posted on 2012-05-25 14:11  黑择明  阅读(2340)  评论(0编辑  收藏  举报