Open ID Показать адрес электронной почты и полное имя пользователя на веб-странице - PullRequest
1 голос
/ 21 декабря 2011

Я использую dotnetopenid в моем asp.net 2.0 и VS 2005. Я сделал только эту работу, и успешная аутентификация сделана мной. У меня есть страница входа в систему, и после аутентификации она переходит на food.aspx. Я хочу толькочтобы отобразить адрес электронной почты пользователя на food.aspx после аутентификации от google. Я сделал только следующую работу для openid. Ничего другого, пожалуйста, скажите мне, какой код я должен написать в login.aspx или food.aspx, чтобы отобразить адрес электронной почтыuser.

<%@ Register Assembly="DotNetOpenAuth" Namespace="DotNetOpenAuth.OpenId.RelyingParty" TagPrefix="rp" %>
<%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"    Namespace="System.Web.UI" TagPrefix="asp" %>

<rp:OpenIdLogin ID="OID" runat=server Identifier="https://www.google.com/accounts/o8/id" ></rp:OpenIdLogin>

Обновление Я написал этот код в событии загрузки страницы login.aspx

  Protected Sub Page_Load(ByVal sender As Object, ByVal e As OpenIdEventArgs)
        Dim openid As New OpenIdRelyingParty()
        Dim request As IAuthenticationRequest = openid.CreateRequest("https://www.google.com/accounts/o8/id")
        Dim fetch As New FetchRequest()
        fetch.Attributes.AddRequired(WellKnownAttributes.Contact.Email)
        request.AddExtension(fetch)
        request.RedirectToProvider()
   End Sub

И загрузке страницы Evemt из Food.aspx.следующий код

  Dim openid As OpenIdRelyingParty = New OpenIdRelyingParty
        Dim response = openid.GetResponse
        If (Not (response) Is Nothing) Then
            Select Case (response.Status)
                Case AuthenticationStatus.Authenticated
                    Dim fetch = response.GetExtension
                    Dim email As String = String.Empty
                    If (Not (fetch) Is Nothing) Then
                        email = fetch.GetAttributeValue(WellKnownAttributes.Contact.Email)
                    End If
                    FormsAuthentication.RedirectFromLoginPage(response.ClaimedIdentifier, False)
            End Select
        End If

Но все равно появляется сообщение об ошибке загрузки страницы login.aspx в этой строке

fetch.Attributes.AddRequired(WellKnownAttributes.Contact.Email)

Ошибка

AddRequired is not a member of System.Collections.ObjectModel.KeyedCollection
(Of DotNetOpenAuth.OpenId.Extensions.AttributeExchange.AttributeRequest

что я могу сделатьза это

1 Ответ

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

Когда ваш пользователь аутентифицирует себя в Google, он будет перенаправлен обратно на вашу веб-страницу.Поскольку вы используете открытый идентификатор, вы можете использовать обмен атрибутами для получения электронной почты и полного имени пользователя, когда пользователь перенаправляется обратно на вашу веб-страницу.

Теперь все, что вам нужно сделать, - это извлечь письмо и имяпользователь из ответа и отображает / сохраняет их в соответствии с вашими потребностями.

Вот подробности, как получить это, используя вышеуказанную библиотеку

openid-пытаясь получить по электронной почте-адрес-из-Google-оп

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...