我在我的asp.net 2.0和VS 2005中使用了dotnetopenid。我只完成了这项工作,并且我完成了一次成功的身份验证。我有一个登录页面,经过身份验证后转到food.aspx。我只想要在google身份验证后显示用户在food.aspx上的电子邮件地址。我只做了以下openid的工作,请告诉我我必须在login.aspx或food.aspx中编写哪些代码来显示电子邮件地址用户。
<%@ 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
Food.aspx的页面加载Evemt编写以下代码
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
我能为此做些什么
答案 0 :(得分:0)
当您的用户对Google进行身份验证时,他将被重定向回您的网页。 由于您使用的是开放ID,因此当用户被重定向回您的网页时,您可以使用属性交换来获取用户电子邮件和全名。
现在您需要做的就是从响应中提取用户的电子邮件和姓名,并根据需要显示/存储它们。
以下是使用上述库
的详细信息