2013-11-29 58 views
2

所以我正在通过MVC 4 simplemembership oAuth提供程序实现Facebook登录过程。MVC Simplemembership在通过OAuth登录用户后,我无法获得用户ID

注册和登录用户运行良好。但是,在使用oAth登录用户之后,我无法获取经过身份验证的用户的UserId。我可以看到UserId存在于membership_oauth表中,它与UserProfile表中的UserId相关。

通常情况下,我会使用WebSecurity.CurrentUserId来获取它,但是在使用OAuthWebSecurity时似乎没有获得此方法。当我尝试时,WebSecurity.CurrentUserId我得到“该对象的实例尚未实例化”,错误。

有没有人知道如何获取这些信息?

非常感谢!

回答

1

我假设你正试图在控制器中获取用户ID。您是否尝试过:

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

我不能告诉你,这是否与Facebook或不是,但它与谷歌验证工作。为了我。

如果您使用另一个控制器而不是AccountController,则还应该在控制器类的基础上添加[InitializeSimpleMembership]

检查:Get UserId (int) in new MVC4 application

编辑:

入住此方法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提供的用户名,我试图获取将member_oauth表链接到UserProfile表的UserId。这是一个整数。 –

+0

请参阅编辑。我希望它有帮助。 – user1987392

相关问题