2013-11-29 81 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

相關問題