Search
Write a publication
Pull to refresh

.NET библиотека для сервиса Loginza

Reading time2 min
Views1.1K
Многие знают такой интересный сервис как Loginza. Сервис еще достаточно молодой, и многие вещи, которые бы хотелось иметь, для него еще не реализованы.

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


Как работать с библиотекой?


Тут я привел пример кода, который просто показывает как работать с библиотекой:

public class AccountController : Controller
{

  [AcceptVerbs(HttpVerbs.Post)]
  public ActionResult SignIn(string token)
  {
    try
    {
      if (token == null) throw new ArgumentNullException("token");
      var loginza = new Loginza.Api.LoginzaHelper(Convert.ToInt32(ConfigurationManager.AppSettings[@"WidgetId"]), ConfigurationManager.AppSettings[@"SecureKey"]) { IsSecureCheck = true };
      var authInfo = loginza.AuthInfo(token);
      if (authInfo.error_type != null)
        throw new AuthException(authInfo.error_message ?? "Unknown error");
      else
      {

        FormsAuthentication.SetAuthCookie(authInfo.name.full_name, false);
      }

      return RedirectToAction("Index", "Home", null);
    }
    catch
    {
      return View("Error");
    }
  }
}


* This source code was highlighted with Source Code Highlighter.


Конструктор класса принимает 2 параметра: ID виджета и секретный ключ.
Свойство IsSecureCheck указывает на необходимость использовать безопасную проверку токена. Также в классе есть свойство ServiceUri, которое можно изменить в случае, если адрес сервиса проверки изменится.

Метод AuthInfo возвращает динамический объект (поэтому класс работает только в .NET 4), поля которого формируются на основе Json данных возвращенных сервисом.

Данная реализация не учитывает небольшой проблемы — я заметил что для разных провайдеров состав полей в Json ответе может меняться (в примере поля для провайдера Google), а значит что и набор полей в динамическом объекте будет отличаться в зависимости от того, через какой провайдер аутентифицировался пользователь.

Буду рад замечаниям и доработкам.

Tags:
Hubs:
Total votes 32: ↑22 and ↓10+12
Comments16

Articles