1

OpenIdAjaxTextBox を使用して DotNetOpenAuth をセットアップしようとしていますが、2 つの問題があります

  1. ユーザーの電子メールアドレスを取得できるようにしたいのですが、それはログインイベントで行われると思います (右?) しかし、そのイベントは決して呼び出されません。そこにブレークポイントを設定しようとしましたが、到達しませんでした。

  2. OpenIdAjaxTextBox (Gmail など) に openid プロバイダーを入力すると、テキスト ボックスにログイン ボタンが表示されるので、それをクリックすると、新しいウィンドウがポップアップして 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
4

1 に答える 1

0

このOpenIdAjaxTextBox.LoggedInイベントは、Web ページからのポストバック (送信ボタンのようなもの) まで発生しません。テキスト ボックス自体のログイン ボタンはポストバックではないため、別の送信ボタンをページに追加する必要があります。

e.Response.Statusは主張された識別子ではありません。LoggedIn イベント ハンドラーを次のように変更する必要があります。

Dim claimedId As String = e.ClaimedIdentifier

AXFetchAsSregTransform動作ClaimsRequestを使用していない限り、Google からメール アドレスを取得することはできません。

更新:最後に、ログインの最後にポップアップウィンドウが消えないことについて...それはあなたが思うように動作するはずです。しかし、 が POST 応答をサポートしていないという「バグ」がありOpenIdAjaxTextBoxます。これは、応答ペイロードのサイズが原因で属性を要求したときに得られるものです。v3.3 ではこれが修正されていますが、まだリリースされていません。申し訳ありません。

于 2009-10-09T16:22:26.603 に答える