Как получить электронную почту, пол и имя пользователя от провайдера Google OpenID - PullRequest
2 голосов
/ 20 декабря 2011

Я сделал систему входа в систему с использованием открытого идентификатора, используя следующий код

<rp:OpenIdLogin runat="server" Identifier="https://www.google.com/accounts/o8/id"   Visible="true" 
        ExampleUrl="" LabelText=" " RegisterText="Register"    ExamplePrefix=" " ID="OpenIdLogin1"  
        OnLoggedIn="OpenIdTextBox1_LoggedIn" RequestEmail="Require" RequestPostalCode="Request"></rp:OpenIdLogin>                     

Он переводит пользователя в Google для аутентификации. Я только хочу получить информацию о пользователе, такую ​​как идентификатор электронной почты, его полное имя и Sex to MyDB

Я написал следующий код, чтобы забрать электронную почту из Google, но нет ничего более позднего

Imports System
Imports DotNetOpenAuth.OpenId.Extensions.AttributeExchange
Partial Class Food
Inherits System.Web.UI.Page


    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
        If (Session("FetchResponse") Is Nothing) Then
            Return
        End If
        Dim fetchResponse As FetchResponse = CType(Session("FetchResponse"), FetchResponse)
        Email = fetchResponse.GetAttributeValue(WellKnownAttributes.Contact.Email)
    End Sub

    Public Property Email() As String
        Get

        End Get
        Set(ByVal value As String)

        End Set
    End Property
End Class

Обновление

Я использовал логин для отображенияаутентифицированное имя пользователя, но оно выглядит следующим образом https://www.google.com/accounts/o8/id?id=AItOawmQoYAeHRxYW0ZOcQ5VODMPWJQgPOAYkTs

как я могу отобразить реальную электронную почту или имя пользователя

Ответы [ 2 ]

1 голос
/ 22 декабря 2011

См. Повторяющийся вопрос Как получить электронную почту от провайдера Google OpenID (в VB) для ответа с приложением, которое:

Вы не можете получить от пользователя Google имя пользователя или пол.Вы можете получить их адрес электронной почты, и я думаю, что об этом.(Может быть, их полное имя).Это зависит от отдельных поставщиков OpenID, и Google, как и другие крупные компании, решил предоставить минимальные данные о пользователе.

0 голосов
/ 20 декабря 2011

Используете ли вы DotNetOpenAuth?Вот как я это сделал

Редактировать: Я добавил свой код для входа в систему OpenID.В основном вы отправляете запрос поставщику OpenID и получаете ответ на ваш запрос.Если запрос был успешным, вы должны иметь некоторую информацию о вашем пользователе, но помните, что разные поставщики OpenID предоставляют разную информацию о ваших пользователях, некоторые параметры могут отсутствовать, даже если вы запросили их.Мой код взят из приложения ASP.NET MVC

public ActionResult OpenIDLogin(string loginIdentifier)
{
    var openid = new OpenIdRelyingParty();
    var response = openid.GetResponse();

    // If there is a response from the specified OpenID identifier we parse it and check it's status
    if (response != null)
    {
        //check the response status
        switch (response.Status)
        {
            case AuthenticationStatus.Authenticated:

                var extensions = response.GetExtension<ClaimsResponse>();
                var user = new User
                        {
                            extensions.FullName, 
                            extensions.Nickname, 
                            extensions.Email,
                            response.ClaimedIdentifier
                        };

                return View();

            case AuthenticationStatus.Canceled:
                // TODO

            case AuthenticationStatus.Failed:
                // TODO
        }
    }
    else
    {
        // If there isn't a response then we need to create the request and add desired extensions
        var request = openid.CreateRequest(loginIdentifier);

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

        return request.RedirectingResponse.AsActionResult();
    }

    return RedirectToAction("Index", "Home");
}

Метод вызывается дважды;один раз, когда запрос выполняется впервые, и он попадает в оператор «else», и второй раз, когда ответ возвращается и входит в оператор «if», создавая пользователя.Надеюсь, это поможет, и извините, что это на C #, но я не очень хорошо знаю VB, чтобы написать это.

...