C# AuthenticationToken为空

C# AuthenticationToken为空,c#,live,single-sign-on,windows-8,microsoft-metro,C#,Live,Single Sign On,Windows 8,Microsoft Metro,我目前正在为Windows8消费者预览版编写一个C#metro应用程序,它从我基于REST的web服务中获取一些数据。我希望应用程序使用当前用户的Windows Live帐户对服务进行身份验证。因此,我将Windows Live SDK添加到我的解决方案中,并将文档中的以下代码片段粘贴到我的登录视图中: LiveAuthClient liveClient = new LiveAuthClient(); LiveLoginResult loginResult = a

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

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

登录调用成功后,我想通过SSL将
LiveConnectSession
的加密
AuthenticationToken
传递给我的Web服务,它应该解密该令牌并读取它感兴趣的信息(这是文档针对此类SSO场景所建议的)。但遗憾的是,会话的
AuthenticationToken
属性总是
null
。我在这里遗漏了什么吗?

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

我遇到了相同的问题,并意识到我的配置有两个问题:

  • 我没有在的API设置中定义“重定向域”
  • 我没有使用重载的LiveAuthClient构造函数
  • 例如,在指定的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不需要指向工作端点,只要这两个值匹配,您就应该投入业务。

    您解决了这个问题吗?如果是这样,你可以自己写一个答案。@Joachim我没有找到解决这个问题的办法。目前,我在HTTPS上使用简单的用户名/密码方法,稍后将添加委派身份验证。您检查的答案对您有用吗?