DotNetOpenAuth를 사용하여 Google에서 OpenID를 통해 사용자의 이메일 주소를 검색하려고합니다.Google OpenID를 사용하여 사용자 이메일 주소 얻기
내 코드는 현재 사용자에게 Google로 올바르게 리디렉션되고 내 애플리케이션에서 이메일 주소를 읽을 수있는 권한을 요청합니다. 그러나 다시 내 페이지로 전환되면서 곧바로 Google로 반송됩니다. 페이지가 다시 게시 상태로 들어 가지 않기 때문에 왜 이런 일이 발생하는지 알 수 있습니다. 그러나 요청 및 응답 데이터를 어떻게 구별하여 페이지의 이메일 주소를 올바르게 읽을 수 있습니까?
권장/업계 표준 접근 방식이 있습니까?
나는 단지 오픈 ID 및 DotNetOpenAuth 함께 시작하지만 분명 답을 보관하십시오, 강력한 ASP.NET 기술을 가지고있어(!)
감사
대신을IsPostBack
을 확인하는
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
ltl.Text = "Welcome " & User.Identity.Name
If Not Page.IsPostBack Then
Dim openid As New OpenIdRelyingParty
Dim req As IAuthenticationRequest = openid.CreateRequest(User.Identity.Name)
Dim fetch As New FetchRequest
fetch.Attributes.AddRequired(WellKnownAttributes.Contact.Email)
fetch.Attributes.AddRequired(WellKnownAttributes.Name.FullName)
req.AddExtension(fetch)
req.RedirectToProvider()
Else
Dim openid As New OpenIdRelyingParty
Dim resp As IAuthenticationResponse = openid.GetResponse()
If resp IsNot Nothing Then
Dim fetch As FetchResponse = resp.GetExtension(Of FetchResponse)()
If fetch IsNot Nothing Then
Trace.Warn(fetch.GetAttributeValue(WellKnownAttributes.Contact.Email))
Else
Trace.Warn("fetch was Nothing")
End If
Else
Trace.Warn("resp was Nothing")
End If
End If
End Sub
맞습니다. 나는 대답이 주어 졌는지를 확인하는 것만으로는 생각하지 않았다는 것에 실망했다. – gowansg
Andrew에게 문의 해 주셔서 감사합니다. 코드 샘플을 인식하지 못했습니다. 위의 코드 샘플과 같이 간결한 코드는 매우 유용합니다. 나는 어제 이것을 실제로 풀었지만, 당신의 예를 보았을 때 나는 여전히 개선의 여지가있다. 또 다른 메모에서 어제 코드 샘플을 찾기 위해 웹을 트롤링하는 동안 여러 사이트에서 많은 게시물을 읽었습니다. 이 분야에 대한 귀하의 지속적인 노력과 기여에 감사드립니다. 나 같은 개발자가 인생을 훨씬 쉽게 만들어줍니다 :-) – EvilDr