none
关于sky drive 的login问题 RRS feed

  • 问题

  • 我的代码是这样的:

     public LiveConnectSession Session
            {
                get;

                set;
            }

            private async void InitAuth()
            {
                if (!Windows.ApplicationModel.DesignMode.DesignModeEnabled)
                {
                    LiveAuthClient authClient = new LiveAuthClient();
                    LiveLoginResult authResult =
                        await authClient.LoginAsync(new List<string>() { "wl.signin", "wl.basic", "wl.skydrive" });
                    if (authResult.Status == LiveConnectSessionStatus.Connected)
                    {
                        this.Session = authResult.Session;
                    }
                }
            }

    在app.xaml.cs中的 protected override void OnLaunched(LaunchActivatedEventArgs args)的最后调用InitAuth();

    运行到   LiveLoginResult authResult =  await authClient.LoginAsync(new List<string>() { "wl.signin", "wl.basic", "wl.skydrive" });时会异常,中断。错误原因是:无可用源,调用堆栈中只包含外部代码。

    同样的代码换一台电脑就可以正常运行。 请问这个是怎么回事呢?

    2012年7月5日 2:23

答案

  • 测试了下,在绑定MS Account和没有绑定情形下,都是可以正常运行。 我这里突然想起,你是否按照向导设置  这个应用的 名字,Pulisher名字和包名,你是否在 https://manage.dev.live.com/build?wa=wsignin1.0 上面创建了一个应用?注意,你在appxmanifest 打包Tab中看到的证书显示的发布者名一定要和网站上的对应, 包名和包的显示名也要一致。例如我的测试项目的设置:


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 vickie shi 2012年7月13日 6:28
    2012年7月13日 4:13
    版主

全部回复

  • 看下是否是不同的编译模式,平台 release / debug , x86/x64/any cpu ?


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年7月5日 6:00
    版主
  • 对问题补充说明一下: photosky这个sample在出问题的这台电脑上是可以正常运行的,同样的代码,放到新建的工程,在同一台电脑中就不能运行。而这个新建的工程换一台电脑又可以正常运行了。好像有点绕,不知道能不能表述明白。所以,猜想问题可能是出在电脑上,也可能是出在工程本身。好纠结。

    2012年7月5日 7:41
  • 问题已经搞定。 原来我一直用登陆skydrive的账户,即邮件地址帐户登陆的电脑,现在改成用本地帐户登陆电脑,问题就解决了。不过不知道为什么会这样,还请大侠指点。

    2012年7月6日 1:50
  • Windows 8绑定了MS Account之后,使用Live SDK的应用会默认使用当前系统的MS Account进行登陆,你可以通过 OnlineIdServiceTicketRequest 在已登陆MS Account的情况下来请求所需要的服务,如:

    var onlineIdAuthenticator = new OnlineIdAuthenticator();

    var serviceTicketRequest = new OnlineIdServiceTicketRequest("wl.basic"); await onlineIdAuthenticator.AuthenticateUserAsync(serviceTicketRequest);



    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年7月6日 3:58
    版主
  • 我用了OnlineIdServiceTicketRequest这段代码以后,会出现异常:身份验证目标无效或配置不正确。 (异常来自 HRESULT:0x80860001),这个是怎么回事(我的用户名和密码都是正确的)?

    另外,之前提到改成本地帐户登录可以解决我的问题,但是后来又发现,这种办法只能弹出登陆框,一旦填写完帐户信息以后,点击登陆,仍然会出现异常:无可用源,调用堆栈中只包含外部代码。

    2012年7月10日 7:27
  • 哦? 比较奇怪,我这里你同样的代码是测试过的,并且还写过Live SDK的例子。 看上去可能是SDK 有问题,是否是安装上的问题,请先看看是否之前安装过先前的版本,或者卸载了再次安装一下。

    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年7月10日 8:02
    版主
  • 我用的是live SDK v5.2,是在http://www.microsoft.com/en-us/download/details.aspx?id=29938  上下载的,安装时没有报错,vs用的是 VS2012RC, 我确认了一下,试过3台电脑都有这个问题,我现在项目就卡在这个问题上面了,请求帮助。        
    2012年7月11日 1:35
  • 这样吧,如果方便的话,分享一份你的程序给我,我来测试. 可以放到SkyDrive.com 或者直接邮件我 v-bobbao (at) microsoft.com

    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年7月11日 2:53
    版主
  • 邮件已经发送过去了,请查收一下。谢谢
    2012年7月13日 1:52
  • 测试了下,在绑定MS Account和没有绑定情形下,都是可以正常运行。 我这里突然想起,你是否按照向导设置  这个应用的 名字,Pulisher名字和包名,你是否在 https://manage.dev.live.com/build?wa=wsignin1.0 上面创建了一个应用?注意,你在appxmanifest 打包Tab中看到的证书显示的发布者名一定要和网站上的对应, 包名和包的显示名也要一致。例如我的测试项目的设置:


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 vickie shi 2012年7月13日 6:28
    2012年7月13日 4:13
    版主
  • 果然是这个问题!总算解决了,好开心!
    2012年7月13日 6:28