AuthenticationToken为null

时间:2012-03-05 19:36:15

标签: c# live single-sign-on windows-8 microsoft-metro

我目前正在为Windows 8消费者预览编写一个C#metro app,它从我的基于REST的Web服务中获取一些数据。我希望应用程序使用当前用户的Windows Live帐户对服务进行身份验证。因此,我将Windows Live SDK添加到我的解决方案中,并将文档中的以下代码段粘贴到我的登录视图中:

LiveAuthClient liveClient = new LiveAuthClient();                
LiveLoginResult loginResult = await liveClient.Login(new string[] { "wl.signin" });

登录调用成功后,我想通过SSL将AuthenticationToken加密的LiveConnectSession传递给我的webservice,它应该解密令牌并读取它感兴趣的信息(这就是文档建议这样的SSO场景)。但遗憾的是,会话的AuthenticationToken属性始终为null。我在这里错过了什么吗?

2 个答案:

答案 0 :(得分:5)

我遇到了同样的问题,发现我的配置存在两个问题:

  1. 我没有在https://manage.dev.live.com
  2. 的API设置中定义“重定向域”
  3. 我没有使用重载的LiveAuthClient构造函数
  4. 例如,在您指定的API设置中:

      

    重定向域:http://localhost/myapp

    然后使用LiveAuthClient的构造函数重载:

    var authClient = new LiveAuthClient("http://localhost/myapp");
    var loginResult = await authClient.LoginAsync("wl-signin");
    
    //this should no longer be null
    var authToken = loginResult.Session.AuthenticationToken;
    

    重定向URI不需要从我所知道的指向工作端点,只要这两个值匹配就应该在业务中。

答案 1 :(得分:1)

您是否已在Live Connect应用管理网站上为Metro风格应用注册了您的应用?您需要注册here才能使用Live Services。在您为应用程序包提供名称和发布者后,它将为您提供以下说明。