我已经创建了一个标准的样板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用户名?我错过了某处的配置调整吗?
答案 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"];