Реализация oAuth-регистрации в проектах ASP.NET MVC 4 на примере ВКонтакте

| Воскресенье, 2 июня, 2013

Метки: ASP.NET MVC, SimpleMembership, oAuth Комментарии: 1

В предыдущей статье "Регистрация через oAuth провайдера в проектах ASP.NET MVC 4", было рассказано, как настроить приложение ASP.NET MVC 4, чтобы пользователи могли регистрироваться через Facebook. Но oauth-подключение для Facebook (также как и для Google, Twitter и др.) является встроенной возможностью в классе OAuthWebSecurity. Как быть, если нужно сделать регистрацию oauth-провайдера, которого нет в стандартной реализации? Рассмотрим такой случай на примере социальной сети ВКонтакте.

Итак, начнем. Создаем проект ASP.NET MVC 4 Web Application, выбираем шаблон Internet Application.

Создаем класс нового oAuth-клиента

Добавим к проекту папку Code и в ней создадим класс VKontakteAuthenticationClient.cs. Наследуем класс от IAuthenticationClient, для этого подключаем пространство DotNetOpenAuth.AspNet. Нам нужно реализовать одно свойство ProviderName, и два метода RequestAuthentication, и VerifyAuthentication. С ProviderName все просто, это что-то типа текстового идентификатора клиента. Задать возвращаемое значение можно каким угодно, но лучше его сделать его читабельным и понятным: "vkontakte". Остальные два метода оставим пока как есть, их мы реализуем чуть позже.

using DotNetOpenAuth.AspNet;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace MvcApplication.Code
{
   public class VKontakteAuthenticationClient : IAuthenticationClient
   {
      public string appId;
      public string appSecret;

      public VKontakteAuthenticationClient(string appId, string appSecret)
      {
          this.appId = appId;
          this.appSecret = appSecret;
      }

      string IAuthenticationClient.ProviderName
      {
          get { return "vkontakte"; }
      }

      void IAuthenticationClient.RequestAuthentication(
                              HttpContextBase context, Uri returnUrl)
      {
          throw new NotImplementedException();
      }

      AuthenticationResult IAuthenticationClient.VerifyAuthentication(
                             HttpContextBase context)
      {
          throw new NotImplementedException();
      }
  }
}

И подключим наш новый класс клиента к проекту. В файле App_Start/AuthConfig.cs добавим в статический метод RegisterAuth такую строчку:

OAuthWebSecurity.RegisterClient(
       client: new VKontakteAuthenticationClient(
              "здесь будет app id", "здесь будет app secret"),
       displayName: "ВКонтакте", // надпись на кнопке
       extraData: null);

На данном этапе у нас есть подключенный клиент, который пока ничего не делает. Запустим проект и перейдем на страницу авторизации, там появилась кнопка ВКонтакте.

Далее зарегистрируем сайт у oauth-провайдера ВКонтакте и добавим код для двух методов клиента.

Комментарии
Андрей
This is cool!
3 года назад
Войдите, чтобы написать комментарий , или воспользуйтесь формой ниже.
 

Copyright © CodeHint.ru 2013-2024 (v2.4.7 - работает на Angular Universal)Калькулятор инвест-портфеля