从谷歌检索OpenId全名

从谷歌检索OpenId全名,openid,dotnetopenauth,Openid,Dotnetopenauth,我正在使用DotNetOpenAuth库与Google(仅限)OpenId一起工作。我检索电子邮件没有任何问题。但是我不能得到全名,它总是空的 request.AddExtension(new ClaimsRequest { Email = DemandLevel.Require, FullName = DemandLevel.Require }); ClaimsResponse ClaimsResponse=r

我正在使用DotNetOpenAuth库与Google(仅限)OpenId一起工作。我检索电子邮件没有任何问题。但是我不能得到全名,它总是空的

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

ClaimsResponse ClaimsResponse=relyingPartyResponse.GetExtension();
if(claimsResponse!=null)
{
var email=索赔响应电子邮件;
var fullName=claimsResponse.fullName;
}
我在谷歌上搜索了这个问题,发现:

很高兴你让它工作了。谷歌不会为他们的用户提供全名或昵称。他们只提供电子邮件地址,以及(我想,但可能只是在白名单上)时区。这不是一个问题,找出如何钻机你的RP,使其工作。谷歌只是还不会这么做安德鲁·阿诺特9月8日14:22 stackoverflow.com/questions/1387438/retrieve-openid-user-information-claims-cross-providers

但那是在2009年9月,也许从那一刻起有些改变了。。。我发现:

openid.ax.required——(必选)指定所请求的属性。 有效值包括:“国家”、“电子邮件”、“名字”、“语言”、“姓氏”。要请求多个属性,请将此参数设置为以逗号分隔的属性列表


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

你链接到的谷歌文档说谷歌使用属性交换,而ClaimsRequest看起来只是一个简单的注册。请参阅或
OpenId.Extensions.AttributeExchange
类。

Sreg只有全名的概念。你在谷歌OP上找到的文件表明,只有个人的名字和姓氏属性可用。AXFetchAsSregTransform行为将sreg全名转换为AX全名,Google将忽略该全名。看起来你必须按照keturn的建议直接使用AX,并请求个人的名字和姓氏属性从Google获得。是的,伙计们,你说得对,非常感谢!下面是描述如何直接使用AX的示例:,但请记住,现在您不仅可以询问电子邮件,还可以询问WellKnownAttributes.Name.First、WellKnownAttributes.Name.Last等
ClaimsResponse claimsResponse = relyingPartyResponse.GetExtension<ClaimsResponse>();

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