上一篇我们搭建好了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