2011-12-21 2 views
1

내 asp.net 2.0 및 VS 2005.i에서 dotnetopenid를 사용하고 있습니다.이 작업 만 수행 했으므로 suceful 인증이 me.I에 수행되었습니다. 로그인 페이지가 있고 인증 후 그것은 food.aspx로 이동합니다. 나는 food.aspx에 대한 사용자의 이메일 주소를 google에서 인증 한 후 표시하려고합니다. openid에 대한 다음 작업 만 수행 했으므로 login.aspx에서 작성해야하는 코드를 알려주지 마십시오. 또는 food.aspx를 사용하여 사용자의 전자 메일 주소를 표시합니다.Open ID 웹 페이지에 사용자의 전자 메일 및 전체 이름 표시

<%@ 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 

의 이벤트 및 페이지에이 코드를 썼다 업데이트는 때라도 코드

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 

쓰기 Food.aspx의 Evemt로드 하지만 여전히이 줄의 login.aspx 페이지로드 이벤트에서 오류가 발생합니다.

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

오류, 그가 다시 웹 페이지로 리디렉션됩니다 어떤 사용자가 일 구글 자신을 인증 할 때이

+0

누구든지 내 질문 –

+0

에 답을 적어주세요 라이브러리 이상 사용이 얻을하는 방법을 자세히입니다 내가 usingvb.net을하지 오전 내 문제 –

답변

0

을 위해 할 수있는

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

입니다. 오픈 아이디를 사용하고 있으므로 Attribute exchange를 사용하여 사용자가 귀하의 웹 페이지로 다시 연결될 때 사용자 이메일과 성명을 얻을 수 있습니다.

이제 응답에서 이메일과 사용자 이름을 추출하여 필요에 따라 표시/저장하십시오. 여기

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

+0

선생님 해결할 수 유래 팀의 사람이 있습니까 C# 그래서 나는 또한 코드를 vb.net로 변환하지만이 코드에는 컴파일 오류가 있으며 어떤 코드를 작성해야하는지 또는 내 웹 앱에 작성해야하는 다른 코드를 이겼는지 알 수 있습니다. –

+0

자바에 대해 알고 있지만 2 단계에서 해당 코드를 작성해야합니다. 사용자가 로그인 페이지로 리디렉션되는 경우 2) 사용자가 페이지를 다시 방문했을 때 어쩌면 인증 오류가 발생할 수 있습니다. 저는 언어 구문 오류가있어야만 컴파일 문제를 파악할 수 있다고 생각합니다. –

+0

http://stackoverflow.com/questions/8575088/display-open-id-email-on-web-page 이것이 하나 더 있습니다. 당신을위한 반성 –

관련 문제