从Google检索OpenId FullName

时间:2010-03-16 11:52:01

标签: openid dotnetopenauth

我正在使用DotNetOpenAuth lib与Google(仅限)OpenId合作。我正在检索电子邮件没有任何问题。但我无法获得FullName,它始终为null。

request.AddExtension(new ClaimsRequest
        {
            Email = DemandLevel.Require,
            FullName = DemandLevel.Require
        });

ClaimsResponse claimsResponse = relyingPartyResponse.GetExtension<ClaimsResponse>();

                if (claimsResponse != null)
                {
                    var email = claimsResponse.Email;
                    var fullName = claimsResponse.FullName;
                }

我搜索了这个问题并发现:

  很高兴你得到了它的工作。 Google不会为其用户提供全名或昵称。他们只提供电子邮件地址,(我认为,但可能只在白名单上)时区。这不是要弄清楚如何安装RP以使其正常工作的问题。谷歌还不会这样做。 - 安德鲁·阿诺特9月8日14:22   stackoverflow.com/questions/1387438/retrieve-openid-user-information-claims-across-providers

但是那是在2009年9月,也许从那一刻起发生了变化......我在http://code.google.com/apis/accounts/docs/OpenID.html找到了:

  

openid.ax.required - (必需)指定所请求的属性。   有效值包括:“country”,“email”,“firstname”,“language”,“lastname”。要请求多个属性,请将此参数设置为以逗号分隔的属性列表。

所以,我的问题是如何从Google OpenId获取FullName(FirstName,LastName)?

1 个答案:

答案 0 :(得分:4)

您链接的Google文档说Google使用了Attribute Exchange,看起来ClaimRequest是一个简单注册的东西。请参阅AXFetchAsSregTransformOpenId.Extensions.AttributeExchange类。