| Воскресенье, 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.
Добавим к проекту папку 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-провайдера ВКонтакте и добавим код для двух методов клиента.
Copyright © CodeHint.ru 2013-2024 (v2.4.7 - работает на Angular Universal)Калькулятор инвест-портфеля