OK, je sais que votre Dernier message a été mois, mais au cas où vous travailliez encore sur ce (ou pour des gens comme moi qui aurait aimé pour voir une réponse à cette question), voici quelques informations concernant le NullReferenceException
que vous avez rencontré lors de la création de la requête OAuth:
La référence null provient du IServiceLocator
utilisé pour résoudre les dépendances. Si vous n'en transmettez pas explicitement un dans le constructeur, il utilise la propriété statique ServiceLocator.Current
dans l'espace de noms Microsoft.Practices.ServiceLocation
.
Ceci est l'un des nombreux pièges de l'utilisation de méthodes statiques et de l'état global, est-ce que vous cachez des problèmes comme celui-ci du consommateur de votre API. Ainsi, si vous n'avez pas spécifié de localisateur de service par défaut, null
est renvoyé, ce qui donne le NullReferenceException
. Pour résoudre ce problème, j'ai mis en place une implémentation de IServiceLocator
qui utilise StructureMap (l'un des nombreux conteneurs IoC disponibles) comme conteneur. Enfin, vous devrez enregistrer des instances pour deux interfaces: ISigningProvider
et INonceProvider
. Heureusement, plusieurs implémentations standard existent dans l'assembly OAuth.Net.Components, telles que GuidNonceProvider et HmacSha1SigningProvider.
Le code résultant ressemble à quelque chose comme ceci:
var container = new Container();
container.Configure(a => a.For<INonceProvider>().Use<GuidNonceProvider>());
container.Configure(a => a.For<ISigningProvider>()
.Use<HmacSha1SigningProvider>()
.Named("signing.provider:HMAC-SHA1"));
var locator = new StructureMapAdapter(container);
ServiceLocator.SetLocatorProvider(delegate { return locator; });
Je sais que ce n'est pas la solution finale à votre question initiale (je travaille toujours sur l'obtention de moi-même travailler), mais je l'espère vous emmène quelques étapes plus loin. Et si vous avez abandonné depuis longtemps cette implémentation ... eh bien, codage heureux quand même!
Désolé, j'ai oublié de mentionner que c'est en utilisant OAuth 1.0a – Redth