Получить OpenId FullName из Google - PullRequest
3 голосов
/ 16 марта 2010

Я использую DotNetOpenAuth lib для работы с Google (только) OpenId. И я получаю электронную почту без каких-либо проблем. Но я не могу получить FullName, оно всегда равно нулю.

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 так, чтобы она работала. Google просто пока этого не сделает. - Эндрю Арнотт 8 сентября в 14:22 stackoverflow.com/questions/1387438/retrieve-openid-user-information-claims-across-providers

Но это было в сентябре 2009 года, возможно, что-то изменилось с того момента ... Я обнаружил, что в http://code.google.com/apis/accounts/docs/OpenID.html:

openid.ax.required - (обязательно) Указывает запрашиваемый атрибут. Допустимые значения: «страна», «электронная почта», «имя», «язык», «фамилия». Чтобы запросить несколько атрибутов, задайте для этого параметра список атрибутов, разделенных запятыми.

Итак, мой вопрос: как я могу получить FullName (FirstName, LastName) из Google OpenId?

1 Ответ

4 голосов
/ 16 марта 2010

В документах Google, на которые вы ссылаетесь, говорится, что Google использует Attribute Exchange, и похоже, что ClaimsRequest - это простая регистрация. См. AXFetchAsSregTransform или OpenId.Extensions.AttributeExchange классы.

...