DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ページ名「OpenIDでログインできるサイトを作成する2」

環境/言語:[Microsoft Visual Web Developer 2008 Express Edition]
分類:[ASP.NET]

棚田と申します。

いつも参照させて頂きありがとうございます。

すいませんが、一点教えて頂けますか?

ページ名「OpenIDでログインできるサイトを作成する2」

ユーザーの個人情報を要求する のサンプルを実行した場合、
以下の行でエラーになりました。
Session("Email") = claims.Email
対処方法を教えて頂けますか?

ちなみに、OpenIDは、OpenID.ne.jp、livedoor、Yahoo! JAPANで
試しましたが、同じ結果です。

よろしくお願いします。
■No30613に返信(tanadaさんの記事)

どのようなエラーが出るのかを教えて下さい。

もし「書き込みのルールについて」をお読みいただけていないようでしたら、お手数ですがご投稿前にご一読されますように、よろしくお願いいたします。

書き込みのルールについて
http://dobon.net/vb/bbs/index.html
棚田です。
エラー内容が未記入ですいませんでした。

●エラー内容
Session("Email") = claims.Email←エラー行
エラーメッセージ
「NullReferenceExceptionはユーザーコードによってハンドルされませんでした。
 オブジェクト参照がオブジェクトインスタンスに設定されていません。」

・想定エラー原因
claimsオブジェクトが空のため、claims.Emailの値も空となり、
Session("Email") に値を格納できないため、エラーになると想定しています。

以下のソースで、OpenIDのサイトからEmailとLanguageの値を取得するよう
依頼しているので、プログラム的には正しいと思いますが原因不明です。
<RP:OpenIdLogin ID="OpenIdLogin1" runat="server"
onloggedin="OpenIdLogin1_LoggedIn"
RequestEmail="Require"
RequestLanguage="Request"
PolicyUrl="~/PrivacyPolicy.aspx" />
よろしくお願いします。


■No30613に返信(tanadaさんの記事)
> 棚田と申します。
>
> いつも参照させて頂きありがとうございます。
>
> すいませんが、一点教えて頂けますか?
>
> ページ名「OpenIDでログインできるサイトを作成する2」
>
> ユーザーの個人情報を要求する のサンプルを実行した場合、
> 以下の行でエラーになりました。
> Session("Email") = claims.Email
> 対処方法を教えて頂けますか?
>
> ちなみに、OpenIDは、OpenID.ne.jp、livedoor、Yahoo! JAPANで
> 試しましたが、同じ結果です。
>
> よろしくお願いします。
>
■No30615に返信(tanadaさんの記事)

StackOverflowに似たような投稿がありました。

c# - claimsResponse Return Null - Stack Overflow
http://stackoverflow.com/questions/1326505/claimsresponse-return-null

参考になるでしょうか?
棚田です。

DotNetOpenIDではないですが、DotNetOpenAuthを利用して一応自己解決しました。
DotNetOpenAuthのサンプルは、「
DotNetOpenAuth を使って OpenID で認証する(1)」
「http://blogs.gine.jp/taka/archives/1350」
を参考にしました。
こちらも、デフォルトでは、メールアドレス等は取得できません。
そこで、Webconfigに以下を追加することでメールアドレス等の取得ができるようになりました。

<sectionGroup name="dotNetOpenAuth" type="DotNetOpenAuth.Configuration.DotNetOpenAuthSection, DotNetOpenAuth">
<section name="openid" type="DotNetOpenAuth.Configuration.OpenIdElement, DotNetOpenAuth" requirePermission="false" allowLocation="true" />
</sectionGroup>

<dotNetOpenAuth>
<openid>
<relyingParty>
<behaviors>
<add type="DotNetOpenAuth.OpenId.RelyingParty.Behaviors.AXFetchAsSregTransform, DotNetOpenAuth" />
</behaviors>
</relyingParty>
</openid>
</dotNetOpenAuth>

今後ともよろしくお願いします。


■No30622に返信(管理人さんの記事)
> ■No30615に返信(tanadaさんの記事)
>
> StackOverflowに似たような投稿がありました。
>
> c# - claimsResponse Return Null - Stack Overflow
> http://stackoverflow.com/questions/1326505/claimsresponse-return-null
>
> 参考になるでしょうか?
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板