ASP.NET MVC アプリケーションで DotNetOpenAuth を使用して、LinkedIn API とやり取りしようとしています。データベースとの間でトークンを永続化および取得するには、サービス層に IConsumerTokenManager を実装する必要があります。現在、次のようなアクセス トークン (リクエスト トークンではない) のトークン シークレットを取得しています。
public string GetTokenSecret(string token)
{
// Retrieves token secret from database based on the user's username
string tokenSecret = _db.LinkedInAccounts.GetTokenSecret(HttpContext.Current.User.Identity.Name);
return tokenSecret;
}
サービス層で System.Web と HttpContext を参照する必要があるため、これは非常に汚いと感じます。私は本当にこれをしたくありませんが、アクセス トークンを取得する別の方法を決定するのに苦労しています。次のようにアクセス トークンを使用して取得できます。
string tokenSecret = _db.LinkedInAccounts.GetTokenSecret(token);
しかし、アクセス トークンが一意になるかどうか、また、何千ものアクセス トークンが保存されている場合にデータベースのパフォーマンスにどのように影響するかは正確にはわかりません。
これは 2 番目の方法ですか、それともより良い代替手段はありますか? サービス層で System.Web を参照する必要はありません。
ありがとう!
更新:誰かが同様の問題に直面した場合、Ninject を使用して IConsumerTokenManager の実装にユーザー名をコンストラクターパラメーターとして挿入することになりました。