LiveAuthClient的当前版本似乎已损坏或我的设置/配置中的某些内容。我通过Package Manager Console获得了LiveSDK版本5.4.3499.620。
我正在开发一个ASP.NET应用程序,问题是LiveAuthClient类似乎没有必要的成员/事件进行身份验证,所以它基本上无法使用。
请注意,InitializeAsync也拼写错误。
怎么了?
更新:
我获得了另一个版本的LiveSDK,它适用于ASP.NET应用程序,但现在我每次尝试使用InitializeSessionAsync或ExchangeAuthCodeAsync时都会遇到异常“找不到ID为1的密钥”。
https://github.com/liveservices/LiveSDK-for-Windows/issues/3
我不认为这是解决问题的正确方法,但我目前没有其他选择。
答案 0 :(得分:0)
我参加派对的时间有点晚了,但是因为我偶然发现了这个问题,试图解决我认为同样的问题(用Live验证用户身份),我将描述我是如何使用它的。
首先,ASP.NET项目的正确NuGet包是LiveSDKServer。
接下来,获取用户信息是一个多步骤的过程:
在Live SDK documentation中对此进行了相当详细的描述,但我将在下面加入一个非常简单的工作示例来将它们放在一起。管理令牌,用户数据和例外取决于您。
public class HomeController : Controller
{
private const string ClientId = "your client id";
private const string ClientSecret = "your client secret";
private const string RedirectUrl = "http://yourdomain.com/home/livecallback";
[HttpGet]
public ActionResult Index()
{
// This is just a page with a link to home/signin
return View();
}
[HttpGet]
public RedirectResult SignIn()
{
// Send the user over to Live so they can authorize your application.
// Specify whatever scopes you need.
var authClient = new LiveAuthClient(ClientId, ClientSecret, RedirectUrl);
var scopes = new [] { "wl.signin", "wl.basic" };
var loginUrl = authClient.GetLoginUrl(scopes);
return Redirect(loginUrl);
}
[HttpGet]
public async Task<ActionResult> LiveCallback(string code)
{
// Get an access token using the authorization code
var authClient = new LiveAuthClient(ClientId, ClientSecret, RedirectUrl);
var exchangeResult = await authClient.ExchangeAuthCodeAsync(HttpContext);
if (exchangeResult.Status == LiveConnectSessionStatus.Connected)
{
var connectClient = new LiveConnectClient(authClient.Session);
var connectResult = await connectClient.GetAsync("me");
if (connectResult != null)
{
dynamic me = connectResult.Result;
ViewBag.Username = me.name; // <-- Access user info
}
}
return View("Index");
}
}