Я пытаюсь получить адрес электронной почты пользователя из Google через OpenID с помощью DotNetOpenAuth.
Мой код до сих пор правильно перенаправляет в Google для текущего пользователя и запрашивает разрешение для моего приложения на чтение адреса электронной почты. Однако, когда его перенаправляют обратно на мою страницу, он возвращается обратно в Google. Я понимаю, почему это происходит (потому что страница никогда не переходит в состояние обратной передачи), но как провести различие между данными запроса и ответа, чтобы я мог правильно прочитать адрес электронной почты на странице?
Есть ли для этого рекомендуемый / отраслевой стандарт?
Я только начинаю работать с OpenID и DotNetOpenAuth, но у меня сильные навыки работы с ASP.NET, поэтому, пожалуйста, держите свои ответы ясными (!)
Спасибо
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