像Openoverflow一样将OpenID用户存储到我的数据库中

时间:2011-12-19 10:10:05

标签: asp.net vb.net openid

我使用以下代码使用OpenID创建了一个登录系统:

<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进行身份验证。我只想在我的数据库中存储电子邮件,全名和性别等用户信息。

我已经编写了以下代码来检索来自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

1 个答案:

答案 0 :(得分:0)

如果您使用的是Open ID,您可以向服务提供商索取某些信息。因此,一旦用户自行授权,您就可以获得OpenId服务提供商提供的信息。

要求提供其他信息的好方法之一是使用属性交换。

请点击此处了解如何使用Google的属性交换

Google OpenId and Attribute Exchange

一旦您将这些参数发回给Google,您需要从请求中提取这些参数并将其保存在数据库中以备将来使用

OpenID协议将共享用户的某些信息,因此您必须确保它是否适合您的系统。