ASP.NET MVC 4 как реализовать Oauth с пользовательским параметром membershipprovider и roleprovider

После многого поиска и многого, пытаясь выяснить, как заставить людей зарегистрироваться и войти на мой сайт (и дать им роль и т.д. и сделать авторизацию). Я унаследован от класса ExtendedMembershipProvider и RoleProvider, сделав для них как пользовательский класс, но теперь у меня все еще возникают проблемы с работой Oauth (в основном OpenID). Я зарегистрировал GoogleClient в AuthConfig, но как только я попытаюсь войти в систему и он попадает в строку (в AccountController.cs):

    if (OAuthWebSecurity.Login(result.Provider, result.ProviderUserId, createPersistentCookie: false))

Затем он говорит, что еще не реализован, теперь я проверил расширенное членство, и я не могу переопределить Login (поскольку он не существует, но где он). Я также искал google alot, но не повезло, любые инструкции для получения oauth для работы были бы потеть (я думаю, мне нужно сделать 3-й CustomOathprovider, но я не могу найти, что наследовать)!

PS: Я сделал custommembershiprpovder и customroleprovider, потому что я хочу использовать другую схему базы данных.

Максим

Ответ 1

Мне пришлось переопределить еще 3 метода в моем настраиваемом memberbershipprovider

public override void CreateOrUpdateOAuthAccount(string provider, string providerUserId, string userName)

public override int GetUserIdFromOAuth(string provider, string providerUserId)
//return -1 if User got no OauthAccount

public override string GetUserNameFromId(int userId)

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

Ответ 2

Это был бы комментарий, если бы у меня хватило репутации для комментариев.

Это не то, как заставить OAuth работать в вашем сценарии, но в случае, если это помогает, источник для OAuthWebSecurity.Login находится в http://aspnetwebstack.codeplex.com/SourceControl/changeset/view/5cb74eb3b2f3#src/Microsoft.Web.WebPages.OAuth/OAuthWebSecurity.cs и чтобы увидеть, как SimpleMembership реализовал OAuth, вы можете посмотреть http://aspnetwebstack.codeplex.com/SourceControl/changeset/view/5cb74eb3b2f3#src/WebMatrix.WebData/SimpleMembershipProvider.cs.

Ваш проект звучит круто, удачи.