2009-05-19 17 views
2

OpenIDサービスプロバイダからいくつかの属性を要求するようにコードを設定しようとしています。同時に、私はActionResultを返すことを望みます。ここではOpenIDのサンプルMVCプロジェクト内のコード(つまりストレートDotNetOpenId/DotNetOpenAuthのウェブサイトから出てくるが)だ属性とDotNetOpenIDで問題が発生しました

...

try 
{ 
    return openid.CreateRequest(Request.Form["openid_identifier"]) 
     .RedirectingResponse 
     .AsActionResult(); 
} 
catch (ProtocolException ex) 
{ ... } 

これは素晴らしいですが、それはすべてのオプションを要求する私を示していませんか、必要な属性。 だから、私は(私自身、テストされていないpseduoっぽいコード)を次のことを試してみた....

var fetch = new FetchRequest(); 
fetch.Attributes.AddRequired(WellKnownAttributes.Contact.Email); 
fetch.Attributes.AddRequired(WellKnownAttributes.Name.FullName); 
fetch.Attributes.AddRequired(WellKnownAttributes.Name.Alias); 
fetch.Attributes.AddRequired(WellKnownAttributes.Preferences.Language); 
fetch.Attributes.AddRequired(WellKnownAttributes.Preferences.TimeZone); 
fetch.Attributes.AddRequired(WellKnownAttributes.Person.Gender); 

openId.CreateRequest(identifier.ToString()).AddExtension(fetch); 

また、これは罰金です。しかし、私は今結果をActionResult()にする方法を知りません...

私はいくつかの必要な属性を定義し、ActionViewを返すことができるopenId.CreateRequestを作成するにはどうすればよいですか?

答えて

1

あなたはすばらしいことをしています。 2つのアプローチを組み合わせるだけです。

IAuthenticationRequest.AddExtensionに電話した後、IAuthenticationRequest.RedirectingResponse.AsActionResult()に電話してください。

try 
{ 
    var request = openid.CreateRequest(Request.Form["openid_identifier"]); 

    var fetch = new FetchRequest(); 
    fetch.Attributes.AddRequired(WellKnownAttributes.Contact.Email); 
    fetch.Attributes.AddRequired(WellKnownAttributes.Name.FullName); 
    fetch.Attributes.AddRequired(WellKnownAttributes.Name.Alias); 
    fetch.Attributes.AddRequired(WellKnownAttributes.Preferences.Language); 
    fetch.Attributes.AddRequired(WellKnownAttributes.Preferences.TimeZone); 
    fetch.Attributes.AddRequired(WellKnownAttributes.Person.Gender); 
    request.AddExtension(fetch); 

    return request.RedirectingResponse.AsActionResult(); 
} 
catch (ProtocolException ex) 
{ ... } 
+0

hmm。それは私が思った(そして元々試みた)ものですが、インテリセンスはエラーを示していました。私のコードは家庭なので、今夜チェックします。私はまた、私も最新のバージョンを使用していると確信しています。乾杯もう一度アンドリュー:) –

+0

うん - 作品!私はそれを試して誓う:(heh!真夜中のプログラミングの欠点... :) –

関連する問題