2013-11-29 3 views
2

Итак, я занимаюсь внедрением входа в систему Facebook через посредника MVC 4 simplemembership oAuth.MVC Simplemembership Я не могу получить идентификатор пользователя после входа пользователя в систему через OAuth

Регистрация и подписание пользователя хорошо сработало. Однако после подписания пользователем с использованием oAth я не могу получить UserId аутентифицированного пользователя. Я вижу, что UserId существует в таблице membership_oauth и относится к UserId в таблице UserProfile.

Обычно я получал его с помощью WebSecurity.CurrentUserId, но, похоже, не существует метода для его получения при использовании OAuthWebSecurity. Когда я пытаюсь, WebSecurity.CurrentUserId, я получаю «экземпляр объекта, который не был создан», ошибка.

Кто-нибудь знает, как получить эту информацию?

Большое спасибо!

ответ

1

Я предполагаю, что вы пытаетесь получить идентификатор пользователя в контроллере. Вы пробовали:

int currentUserId = (int) Membership.GetUser().ProviderUserKey; 

Я не могу сказать вам, если это работает с Facebook или нет, но он работает с Google Auth. для меня.

Вы также должны добавить [InitializeSimpleMembership] поверх класса контроллера, если используете другой контроллер, кроме AccountController.

Проверьте это: Get UserId (int) in new MVC4 application

EDIT:

Проверить этот метод int GetUserIdFromOAuth(string provider, string providerUserId) и попробовать что-то вроде:

SimpleMembershipProvider provider = (SimpleMembershipProvider) Membership.Provider; 
int id = provider.GetUserIdFromOAuth("you_know_the_provider", "you_can_get_the_provider_user_id") 

Кроме того, парень в этом вопросе:

OAuth and SimpleMembership - how to retrieve ProviderUserId from webpages_OAuthMembership table

жалуется на обратную вам проблему: он хочет, чтобы ProviderUserKey оставался без доступа к UserID.

+0

Спасибо. Membership.GetUser() ProviderUserKey. возвращает имя пользователя, предоставленное facebook, я пытаюсь получить UserId, который связывает таблицу membership_oauth с таблицей UserProfile. Это int. –

+0

См. Редактирование. Я надеюсь, что это помогает. – user1987392