2009-10-08 2 views
1

을 리디렉션하지만 난 두 가지 문제DotNetOpenAuth 이메일을 얻을 내가 OpenIdAjaxTextBox를 사용하여 설치 DotNetOpenAuth에 노력하고 문제를

i는 사용자의 이메일 주소를 얻을 수 있기를 원하는
  1. 이 있고 난 그게 loggedin에서 이루어집니다 생각 이벤트 (오른쪽?)하지만 그 이벤트는 결코 호출되지 않습니다, 나는 거기에 중단 점을 설정하려했지만 결코 그것에 도달하지 않습니다.

  2. OpenIdAjaxTextBox에서 openid 공급자를 입력하면 (Gmail이라고 말하면서) 텍스트 상자에 로그인 버튼이 생기므로 클릭하면 새 창이 튀어 나오고 Gmail 로그인 양식이 표시됩니다. 내 사용자 이름과 비밀 번호를 클릭하고 그 팝업 창 새로 고침과 내 웹 사이트가 해당 팝업 창에로드 로그인을 클릭하십시오, 나는 내 사이트로 리디렉션되지 않은 로그인 후 창을 팝업 기대합니다. 어떤 종류의 전송 버튼 - 여기

OpenIdAjaxTextBox.LoggedIn 이벤트는 웹 페이지에서 다시 게시 될 때까지 해고되지 내가

<%@ Register Assembly="DotNetOpenAuth" Namespace="DotNetOpenAuth.OpenId.RelyingParty" 
    TagPrefix="openid" %> 

    <openid:OpenIdAjaxTextBox ID="OpenIdAjaxTextBox1" runat="server" 
     OnLoggingIn="openIdtxtbx_LoggingIn" 
     OnLoggedIn="openIdtxtbx_LoggedIn" 
     OnClientAssertionReceived="onauthenticated(sender)" 
     OnUnconfirmedPositiveAssertion="openIdtxtbx_UnconfirmedPositiveAssertion" /> 

    Protected Sub openIdtxtbx_LoggedIn(ByVal sender As Object, ByVal e As OpenIdEventArgs) 
     ' Do something here 
     Dim claimedId As String = e.Response.Status 
    End Sub 

    Protected Sub openIdtxtbx_LoggingIn(ByVal sender As Object, ByVal e As OpenIdEventArgs) 
     ' Retrieve the email address of the user 
     Dim c As New ClaimsRequest 
     c.Email = DemandLevel.Require 
     e.Request.AddExtension(c) 
    End Sub 

    Protected Sub openIdtxtbx_UnconfirmedPositiveAssertion(ByVal sender As Object, ByVal e As OpenIdEventArgs) 
     ' This is where we register extensions that we want to have available in javascript 
     ' on the browser. 
     OpenIdAjaxTextBox1.RegisterClientScriptExtension(Of ClaimsResponse)("sreg") 
    End Sub 

답변

0

사용하는 코드입니다. 텍스트 상자 자체의 로그인 버튼은 다시 게시가 아니므로 페이지에 다른 제출 버튼을 추가해야합니다.

e.Response.Status이 아니며, 인 식별자입니다. 당신이 읽을 수 있도록 LoggedIn 이벤트 핸들러를 변경해야합니다 :

Dim claimedId As String = e.ClaimedIdentifier 

당신은 당신이 AXFetchAsSregTransform 동작을 사용하지 않는 ClaimsRequest를 사용하여 Google에서 이메일 주소를받지 않습니다.

: 마지막으로 로그인이 끝날 때 사라지지 않는 팝업 창이 ... 생각했던대로 작동해야합니다. 그러나 OpenIdAjaxTextBox이 POST 응답을 지원하지 않는 "버그"가 있습니다. 응답 페이로드의 크기로 인해 속성을 요청할 때 얻을 수있는 것입니다. v3.3에서는이 문제를 해결했지만 아직 출시되지 않았습니다. 미안합니다.

+0

1. 포스트 백을 수행하고 LoggedIn 이벤트가 예상대로 발생합니다. – Murre

+0

2. 팝업 창에 대해 샘플을 실행했고 문제를 재현 할 수있었습니다. 나는 ajaxlogin.aspx.cs 라인 14를 에서 modefied했습니다. Email = DemandLevel.Request, to Email = DemandLevel.Require, 그래서 requirelevel을 Require로 변경 했으므로 팝업 창이 닫히지 않습니다. 그래서 일부 추가 디버깅을 수행하고 소스 코드 (v.3.2.2.9257)의 "ReportAuthenticationResult() 줄 1413"에서 비롯된 "인스턴스를 찾을 수없는 개체"로 인해 오류가 발생했음을 확인했습니다. (나는 openid 제공자로서 google과 yahoo를 시도했다.) 내가 뭘 잘못하고 있는지 알 수 있을까? – Murre

+0

btw, u는 openid로 멋진 일을하고 있습니다. Andrew :) 내 웹 앱을 실행하고 있습니다. 기부를 기대할 수 있습니다. – Murre

관련 문제