2012-06-15 2 views
2

DotNetOpenAuth에서 인증을 위해 Google 애플리케이션을 사용하고 이메일 주소를 요청했습니다.DotNetOpenAuth를 업그레이드 한 후 OpenIdButton이 이메일 주소를 가져 오지 못함

DotNetOpenAuth.dll의 이전 버전을 사용할 때 작동하는 프로그램이 있습니다. 그러나 현재 버전으로 DLL을 업데이트하면 코드가 손상됩니다. 응용 프로그램은 인증 할 수는 있지만 전자 메일 주소로 응답하지 않습니다.

내 코드는 다음과 같습니다

<rp:OpenIdButton runat="server" ImageUrl="~/images/google.jpg" Text="Login with Google" ID="OpenIdButton1" 
      Identifier="https://www.google.com/accounts/o8/id" LogOnMode="None" OnLoggingIn="test" OnLoggedIn="OpenIdLogin1_LoggedIn"> 
      <Extensions> 
       <sreg:ClaimsRequest Email="Require" /> 
      </Extensions> 

protected void OpenIdLogin1_LoggedIn(object sender, OpenIdEventArgs e) 
    { 
     // Hide login button. 
     OpenIdButton1.Visible = false;   

     // Get email. 
     //ClaimsResponse profile = e.Response.GetExtension<ClaimsResponse>(); 
     ClaimsResponse profile = e.Response.GetUntrustedExtension<ClaimsResponse>(); 
     string email = profile.Email; 

And the code breaks at the above line. 

이 새 DLL 뭔가 변화를 했습니까?

답변

0

귀하의 코드는 AXFetchAsSregTransform behavior의 사용에 의존합니다. 링크를 검토하고 <configSections> 영역에서 최신 DotNetOpenAuth에 필요한 새 XML에 맞게 web.config 파일이 업데이트되었는지 확인하십시오. web.config에 이미 AXFetchAsSregTransform이 선언되어 있지만 configSections를 업데이트 할 때까지 무시됩니다.

참고로, not은 일반적으로 GetUntrustedExtension을 사용해야합니다.

+0

Andrew에게 미안하지만 귀하의 권장 사항이 작동하지 않습니다. Dll 4.1 최신 버전을 사용해 보았습니다. 인증은 성공했지만 응답은 널입니다. 또한 (링크를 기반으로) Web.config 파일에 정보를 추가하면 프로그램이 실행되지 않습니다. 다음 오류로 종료됩니다. "DotNetOpenAuth.OpenId"dll을 찾을 수 없습니다. – Anup

+0

앤드류에게 도움을 주셔서 감사합니다. 같은 설정으로 프로젝트를 다시 만들었고 문제가 해결되었습니다. 비록 그것이 그것을 고쳐 졌는지 나는 모른다. – Anup

관련 문제