2014-10-12 21 views
3

獲得用戶名我下面這篇文章,以實現OAuth認證: http://www.asp.net/mvc/tutorials/mvc-5/create-an-aspnet-mvc-5-app-with-facebook-and-google-oauth2-and-openid-sign-on如何OWIN OAuth的.NET

你可以找到ExternalLoginCallback控制器的動作。 在這一行動以下方法被執行:

ExternalLoginInfo loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync(); 

LOGININFO已登錄屬性。 Login屬性具有LoginProvider和ProviderKey屬性。

有誰知道它是什麼ProviderKey屬性?註冊到提供商的唯一用戶ID是否是唯一的?

謝謝

回答

7

嘗試User.Identity.GetUserId()方法。

if (loginInfo == null) 
{ 
    return View("ExternalLoginFailure"); 
} 

var userId = User.Identity.GetUserId(); 

更多信息請參閱Get more information from Social providers used in the VS 2013 project templates的帖子。

更新:另一種方式讓用戶:

var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync(); 
if (loginInfo == null) 
{ 
    return RedirectToAction("Login"); 
} 

var user = await UserManager.FindAsync(loginInfo.Login); 
if (user != null) 
{ 
    await SignInAsync(user, isPersistent: false); 
    return RedirectToLocal(returnUrl); 
} 
+0

感謝您的迴應。那麼,你認爲提到的方法從提供者(例如Facebook)返回唯一的userId?什麼是登錄屬性? – kat1330 2014-10-12 18:41:42

+1

根據它的文檔'GetExternalLoginInfoAsync'從外部標識中提取登錄信息。它是一種通用方法,它只提供識別用戶所需的數據。返回的值包含默認用戶名,第三方提供者的名稱和身份驗證ID。它不提供關於用戶的供應商特定細節 – 2014-10-12 19:22:43