OpenID: попытка получить адрес электронной почты от Google OP

Я использую dotnetopenauth 3.2 для реализации Openid и не могу понять, как заставить Google передать адрес электронной почты в ответе на претензии. Я знаю, что Google не поддерживает простую регистрацию, но я не могу определить, что они поддерживают.

Остановитесь на этом вопросе в том, что я только начал изучать OpenID, и я знаю, что у меня нет четкого понимания спецификации, которая, как мне кажется, приводит к моей путанице.

Любая помощь будет оценена!

    Хорошо, понял это. Я отправил вопрос о группе API объединенного журнала Goolge, и мне сказали использовать обмен атрибутов .

    Ниже приведен код для DotNetOpenAuth .

    Не используйте этот код для производства. Это только для иллюстрации!

    Запрос:

    using (OpenIdRelyingParty openid = new OpenIdRelyingParty()) { IAuthenticationRequest request = openid.CreateRequest(openidurl); var fetch = new FetchRequest(); fetch.Attributes.AddRequired(WellKnownAttributes.Contact.Email); request.AddExtension(fetch); // Send your visitor to their Provider for authentication. request.RedirectToProvider(); } 

    Ответ:

     OpenIdRelyingParty openid = new OpenIdRelyingParty(); var response = openid.GetResponse(); if (response != null) { switch (response.Status) { case AuthenticationStatus.Authenticated: { var fetch = response.GetExtension(); string email = string.Empty(); if (fetch != null) { email = fetch.GetAttributeValue( WellKnownAttributes.Contact.Email); } FormsAuthentication.RedirectFromLoginPage( response.ClaimedIdentifier, false); break; } ... } } 

    Когда я попытаюсь получить полное имя, ответ будет нулевым, пожалуйста, предоставьте решение, чтобы получить полное имя. Этот пост действительно помогает. Мой пример кода такой.

     var fetch = new FetchRequest(); fetch.Attributes.AddRequired(WellKnownAttributes.Contact.Email); fetch.Attributes.AddRequired(WellKnownAttributes.Name.FullName); fetch.Attributes.AddRequired(WellKnownAttributes.Company.CompanyName); //fetch.Attributes.AddRequired(WellKnownAttributes.Contact.Email); request.AddExtension(fetch); 

    А также

     if (fetch != null) { email = fetch.GetAttributeValue(WellKnownAttributes.Contact.Email); name = fetch.GetAttributeValue(WellKnownAttributes.Name.FullName); company = fetch.GetAttributeValue(WellKnownAttributes.Company.CompanyName); } 
    Давайте будем гением компьютера.