OpenID: próbuje uzyskać adres e-mail z Google OP

Używam dotnetopenauth 3.2 do implementacji Openid i nie wiem, jak zmusić Google do podania adresu e-mail w odpowiedzi na reklamacje. Wiem, że Google nie obsługuje prostej rejestracji,ale nie mogę określić, co obsługują.

Zastrzeżenie do tego pytania jest takie, że dopiero zacząłem uczyć się OpenID i Wiem, że nie mam solidnego pojęcia o specyfikacji, co moim zdaniem prowadzi do mojego zamieszania.

Każda pomoc będzie mile widziana!

Author: Paolo Moretti, 2009-08-19

2 answers

/ Align = "left" / Wysłałem pytanie na Goolge ' s Federated Log API group i powiedziano mi, aby użyć atrybut exchange .

Poniżej znajduje się kod dla DotNetOpenAuth .

proszę nie używać tego kodu w produkcji. To tylko dla celów ilustracyjnych!

Prośba:

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();
}

ODPOWIEDŹ:

OpenIdRelyingParty openid = new OpenIdRelyingParty();
var response = openid.GetResponse();
if (response != null)
{
    switch (response.Status)
    {
        case AuthenticationStatus.Authenticated:
        {
            var fetch = response.GetExtension<FetchResponse>();
            string email = string.Empty();
            if (fetch != null)
            {
                email =  fetch.GetAttributeValue(
                    WellKnownAttributes.Contact.Email);
            }

            FormsAuthentication.RedirectFromLoginPage(
                response.ClaimedIdentifier, false);
            break;
        }
        ...
    }
}
 52
Author: Zaffiro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-15 03:20:37

Gdy próbuję uzyskać pełną nazwę odpowiedź jest null, proszę podać rozwiązanie, aby uzyskać pełną nazwę, Ten post jest naprawdę pomoc ful Dziękuję. Mój przykładowy kod jak ten.

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);

I

if (fetch != null)
         {
             email = fetch.GetAttributeValue(WellKnownAttributes.Contact.Email);
             name = fetch.GetAttributeValue(WellKnownAttributes.Name.FullName);
             company = fetch.GetAttributeValue(WellKnownAttributes.Company.CompanyName);
         } 
 1
Author: Ashekur Rahman molla Asik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-01 08:34:44