打开ID在网页上显示电子邮件和用户的全名

时间:2011-12-21 04:55:06

标签: asp.net vb.net openid

我在我的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

我能为此做些什么

1 个答案:

答案 0 :(得分:0)

当您的用户对Google进行身份验证时,他将被重定向回您的网页。 由于您使用的是开放ID,因此当用户被重定向回您的网页时,您可以使用属性交换来获取用户电子邮件和全名。

现在您需要做的就是从响应中提取用户的电子邮件和姓名,并根据需要显示/存储它们。

以下是使用上述库

的详细信息

openid-trying-to-get-email-address-from-google-op