【问题标题】:AuthenticationToken is null身份验证令牌为空
【发布时间】:2012-03-05 19:36:15
【问题描述】:

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

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

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

【问题讨论】:

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

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


【解决方案1】:

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

  1. 我没有在https://manage.dev.live.com 的 API 设置中定义“重定向域”
  2. 我没有使用重载的 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 不需要指向工作端点,只要这两个值匹配,您就应该在业务中。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-16
      • 2017-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-17
      相关资源
      最近更新 更多