Я использую 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
что я могу сделатьза это