• SkyDrive APIs——用户登录和APP授权(2)


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

    Man propose,God disposes!
  • 相关阅读:
    2.4 自给自足的脚本:位于第一行的#!
    2.3 一个简单的脚本
    2.2 为什么要使用Shell脚本
    JSON 字符串 与 java 对象的转换
    ajax异步提交文件
    jquery选择器
    发现前端框架 bui-min.js
    学习hsf
    Git详解
    java学习材料
  • 原文地址:https://www.cnblogs.com/mehale/p/2517941.html
Copyright © 2020-2023  润新知