3

我创建了一个标准样板 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 用户名?我在某处错过了配置调整吗?

4

1 回答 1

2

在这里找到我的答案:插入自定义 OAuth/OpenID 提供程序。自 2012 年 8 月以来,这一直是一个已知问题,至今(DotNetOpenAuth.AspNet 4.2.2.13055,2013 年 4 月)尚未修复。

解决方法是编写自己的 Google 提供程序,上面的博客文章包含一个完整的工作示例。那么获取谷歌用户名就很简单了:

var googleName = result.ExtraData["firstName"] + " " + result.ExtraData["lastName"];
于 2013-04-17T21:48:40.183 回答