我正在使用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)?
答案 0 :(得分:4)
您链接的Google文档说Google使用了Attribute Exchange,看起来ClaimRequest是一个简单注册的东西。请参阅AXFetchAsSregTransform或OpenId.Extensions.AttributeExchange
类。