2013-09-06 5 views
1

Кажется, что текущая версия LiveAuthClient либо сломана, либо что-то в моей настройке/конфигурации. Я получил версию LiveSDK 5.4.3499.620 через консоль диспетчера пакетов.LiveAuthClient сломан?

Я разрабатываю приложение ASP.NET, и проблема в том, что класс LiveAuthClient не имеет необходимых элементов/событий для аутентификации, поэтому он в основном неприменим.

IntelliSense auto-complete

Обратите внимание, что InitializeAsync написано неправильно Aswell.

Что случилось?

UPDATE:

я получил еще одну версию LiveSDK, которая для приложений ASP.NET, но теперь я получаю исключение «Не удалось найти ключ с ID 1» ​​каждый раз я стараюсь либо InitializeSessionAsync или ExchangeAuthCodeAsync.

https://github.com/liveservices/LiveSDK-for-Windows/issues/3

Я не думаю, что это правильный способ решить эту проблему, но у меня нет других вариантов на данный момент.

ответ

0

Я немного опаздываю на вечеринку, но так как я наткнулся на это, пытаясь решить то, что я предполагаю, это та же проблема (аутентификация пользователей с Live), я опишу, как я ее работаю.

Во-первых, правильный пакет NuGet для проекта ASP.NET - LiveSDKServer.

Далее, получение информации о пользователе является многоступенчатым процессом:

  1. Отправить пользователю жить так, они могут авторизовать приложение для доступа к данным (степень которого определяется «областей» ты указать)
  2. Живой перенаправляет обратно к вам с кодом доступа
  3. Вы затем запросить информацию о пользователях, используя код доступа

Это описывается довольно хорошо в 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"); 
    } 
} 
+0

Это отлично выглядит. Я еще не пробовал, но похоже, именно то, что я искал последние 2 дня. Спасибо, Джаред. –