在ASP.NET MVC 4中使用OAuthWebSecurity时获取Google用户名?

时间:2013-04-17 15:57:17

标签: asp.net-mvc asp.net-mvc-4 oauth dotnetopenauth google-oauth

我已经创建了一个标准的样板ASP.NET MVC 4 Internet项目。当使用OAuthWebSecurity使我的网站能够通过Facebook进行社交登录时,我看到如何通过访问AuthenticationResult的ExtraData来访问AccountController中的ExternalLoginCallback()操作中的Facebook用户名:

    AuthenticationResult result = OAuthWebSecurity.VerifyAuthentication( Url.Action( "ExternalLoginCallback", new { ReturnUrl = returnUrl } ) );

    var facebookName = result.ExtraData["name"];

但是,使用Google登录时,ExtraData仅包含“电子邮件”。是否可以获取Google用户名?我错过了某处的配置调整吗?

1 个答案:

答案 0 :(得分:2)

在这里找到我的答案:Plugging custom OAuth/OpenID providers。这是自2012年8月以来的一个已知问题,至今尚未解决(DotNetOpenAuth.AspNet 4.2.2.13055,2013年4月)。

解决方法是编写自己的Google提供程序,上面的博客文章包含完整的工作示例。获取Google用户名是一件简单的事情:

var googleName = result.ExtraData["firstName"] + " " + result.ExtraData["lastName"];