DotNetOpenAuthを使用してOpenID経由で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