1

我正在使用开箱即用的 MVC4 OpenId 实现。

我得到了AuthenticationResult使用:

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

在结果上,您可以使用数组访问提供者特定的数据:

result.ExtraData

现在的问题:

我知道作为 OpenId 解决方案的一部分,您可以向提供商索取更多信息。

我如何从默认情况下不提供名字和姓氏的提供商(如 Google 等)请求具体名字和姓氏?

谢谢。

4

2 回答 2

1

BrockAllen 有一个有趣的项目,它集成了 Claims 和 OAuthWebSecurity。这在从所有不同的提供者获取额外数据、调用它们相同的东西然后将它们附加到 ClaimsPrincipal.Current.Claims 集合中完成了繁重的工作。

在从 google OpenID 获取正确数据方面,旧版本的 DotNetOpenAuth 存在错误。也许通过 nuget 的更新会为您修复它。

于 2012-10-17T11:08:27.240 回答
0

我还从头开始创建了一个不同的/新的库来向 OAuth2 提供者进行身份验证,然后使用生成的配置文件数据来填充用户的声明。所以换句话说,它不使用 MVC 4 OAuthWebSecurity(以及因此的 DotNetOpenAuth)实现。

http://brockallen.com/2012/10/26/integrating-claims-and-oauth2/

于 2012-10-27T00:21:23.460 回答