मैं 2-पैर वाले ओएथ के साथ काम करने के लिए डीएनओए प्राप्त करने में सक्षम नहीं था इसलिए हस्ताक्षर हस्ताक्षर को संभालने के लिए मैंने अपनी बेस क्लास के रूप में http://oauth.googlecode.com/svn/code/csharp/OAuthBase.cs का उपयोग करके अपना उपभोक्ता बना दिया। तुम सब करने की ज़रूरत है यह उपवर्ग है और हस्ताक्षर तरीकों का उपयोग http प्राधिकरण हैडर निर्माण करने के लिए ...
string sigMethodType = GetSigMethodType();
string ts, nonce, normalizedUrl, normalizedParams;
string sig = GenerateSignature(new Uri("http://some-endpoint-to-call"), "GET", out nonce, out ts, out normalizedUrl, out normalizedParams);
string header = "OAuth realm=\"" + normalizedUrl + "\"," +
OAuthConsumerKeyKey + "=\"" + ConsumerKey + "\"," +
OAuthSignatureMethodKey + "=\"" + "HMACSHA1SignatureType" + "\"," +
OAuthSignatureKey + "=\"" + sig + "\"," +
OAuthTimestampKey + "=\"" + ts + "\"," +
OAuthTokenKey + "=\"" + String.Empty + "\"," +
OAuthNonceKey + "=\"" + nonce + "\"," +
OAuthVersionKey + "=\"" + OAuthVersion + "\"";
एक बार जब आप प्राधिकरण हैडर बस अपने वेब अनुरोध का निर्माण और इसे भेजने के है ...
var wr = (HttpWebRequest)HttpWebRequest.Create(messageEndpoint.Location);
wr.Headers.Add(HttpRequestHeader.Authorization, BuildAuthHeader(messageEndpoint));
wr.ContentType = messageEndpoint.ContentType;
wr.Method = CdwHttpMethods.Verbs[messageEndpoint.HttpMethod];
using (var resp = (HttpWebResponse)req.GetResponse())
{
switch (resp.StatusCode)
{
case HttpStatusCode.Unauthorized:
Assert.Fail("OAuth authorization failed");
break;
case HttpStatusCode.OK:
using (var stream = resp.GetResponseStream())
{
using (var sr = new StreamReader(stream))
{
var respString = sr.ReadToEnd();
}
}
break;
}
}
अद्यतन: मैं devdefined के ऑथ उपभोक्ता के साथ काम करने के लिए 2-पैर प्राप्त करने में भी सक्षम था। http://code.google.com/p/devdefined-tools/wiki/OAuthConsumer
var endPoint = new Uri("http://example.com/restendpoint.svc");
var ctx = new OAuthConsumerContext
{
ConsumerKey = "consumerkey1",
ConsumerSecret = "consumersecret1",
SignatureMethod = SignatureMethod.HmacSha1
};
var session = new OAuthSession(ctx, endPoint, endPoint, endPoint);
var respText = session.Request().Get().ForUri(endPoint).ToString();
यह अच्छा होगा यदि यह एक खाली निर्माता या एक अधिभार कि सिर्फ संदर्भ में लेता था, लेकिन यह काम करने लगता है किया जाएगा।
क्या आपने कभी प्रमाणीकरण मॉड्यूल का काम किया है? मैं कुछ इसी तरह की तलाश में हूं। यहां एकमात्र उत्तर उपभोक्ता बना रहा है। – AlexGad