Loginzaサービスの.NETライブラリ

多くの人がLoginzaのような興味深いサービスを知っています。 このサービスはまだ非常に若く、私が欲しいものの多くはまだ実装されていません。



昨日、ユーザー認証の成功または失敗に関する情報を扱う簡単な方法が必要でした。 このサービスで動作する簡単なヘルパーをスケッチしました。 こちらからダウンロードできます。





ライブラリの使用方法




ここでは、ライブラリを操作する方法を単に示すコードの例を示しました。



public class AccountController : Controller

{



[AcceptVerbs(HttpVerbs.Post)]

public ActionResult SignIn( string token)

{

try

{

if (token == null ) throw new ArgumentNullException( "token" );

var loginza = new Loginza.Api.LoginzaHelper( Convert .ToInt32( ConfigurationManager .AppSettings[ @"WidgetId" ]), ConfigurationManager .AppSettings[ @"SecureKey" ]) { IsSecureCheck = true };

var authInfo = loginza.AuthInfo(token);

if (authInfo.error_type != null )

throw new AuthException(authInfo.error_message ?? "Unknown error" );

else

{



FormsAuthentication.SetAuthCookie(authInfo.name.full_name, false );

}



return RedirectToAction( "Index" , "Home" , null );

}

catch

{

return View( "Error" );

}

}

}




* This source code was highlighted with Source Code Highlighter .








public class AccountController : Controller

{



[AcceptVerbs(HttpVerbs.Post)]

public ActionResult SignIn( string token)

{

try

{

if (token == null ) throw new ArgumentNullException( "token" );

var loginza = new Loginza.Api.LoginzaHelper( Convert .ToInt32( ConfigurationManager .AppSettings[ @"WidgetId" ]), ConfigurationManager .AppSettings[ @"SecureKey" ]) { IsSecureCheck = true };

var authInfo = loginza.AuthInfo(token);

if (authInfo.error_type != null )

throw new AuthException(authInfo.error_message ?? "Unknown error" );

else

{



FormsAuthentication.SetAuthCookie(authInfo.name.full_name, false );

}



return RedirectToAction( "Index" , "Home" , null );

}

catch

{

return View( "Error" );

}

}

}




* This source code was highlighted with Source Code Highlighter .












クラスコンストラクターは、ウィジェットIDと秘密キーの2つのパラメーターを取ります。

IsSecureCheckプロパティは、セキュリティで保護されたトークン検証を使用する必要があることを示します。 また、クラスにはServiceUriプロパティがあり、検証サービスのアドレスが変更された場合に変更できます。



AuthInfoメソッドは動的オブジェクトを返します(したがって、クラスは.NET 4でのみ機能します)。そのフィールドは、サービスによって返されたJsonデータに基づいて形成されます。



この実装では小さな問題は考慮されません-さまざまなプロバイダーでは、Json応答のフィールドの構成が変更されることがあることに気付きました(Googleプロバイダーのフィールドの例)。つまり、ユーザーが認証されるプロバイダーによって動的オブジェクトのフィールドのセットが異なります。



コメントと改善を喜んでいたします。






All Articles