DotNetOpenAuth получить электронную почту и перенаправить проблему - PullRequest
1 голос
/ 08 октября 2009

Я пытаюсь настроить DotNetOpenAuth с помощью OpenIdAjaxTextBox, но у меня есть две проблемы

  1. я хочу получить адрес электронной почты пользователя, и я думаю, что это происходит в событии loggedin (верно?), Но это событие никогда не вызывается, я пытался установить точку останова там, но не получаю к нему.

  2. когда я набираю провайдера openid в OpenIdAjaxTextBox (скажем, Gmail), я получаю кнопку входа в текстовое поле, поэтому я нажимаю на нее, появляется новое окно и отображается форма входа в Gmail, но после этого я введите мое имя пользователя и пароль и нажмите на кнопку входа, чтобы всплывающее окно обновилось, и мой собственный веб-сайт загрузился в это всплывающее окно. Я мог бы ожидать, что всплывающее окно закроется после того, как я войду, не перенаправив меня на мой сайт.

вот код, который я использую

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

1 Ответ

0 голосов
/ 09 октября 2009

Событие OpenIdAjaxTextBox.LoggedIn не запускается до обратной передачи с веб-страницы - какая-то кнопка отправки. Кнопка «Вход» в текстовом поле сама по себе не является обратной передачей, поэтому вам нужно добавить еще одну кнопку отправки на свою страницу.

e.Response.Status - это , а не заявленный идентификатор. Вам следует изменить свой обработчик событий LoggedIn на:

Dim claimedId As String = e.ClaimedIdentifier

Вы не получите адрес электронной почты от Google, используя ClaimsRequest, если не используете поведение AXFetchAsSregTransform .

обновлен : Наконец, о том, что всплывающее окно не исчезает в конце входа в систему ... оно должно работать так, как вы думаете. Но есть «ошибка» в том, что OpenIdAjaxTextBox не поддерживает ответы POST, что вы и получаете, когда запрашиваете атрибуты из-за размера полезной нагрузки ответа. v3.3 исправляет это, но пока не выпущено. Извините за это.

...