Having trouble implementing Yahoo BOSS v2 with OAuth in .net/C#
I've been trying to create a simple search page using the Yahoo BOSS v2 api, but cant get OAuth to work properly. I have all the keys etc, and downloaded a C# class for OAuth at http://oauth.googlecode.com/svn/code/csharp/OAuthBase.cs , but I keep getting errors.
We've tried the following:
a javascript function builds a yahoo boss query string and then leads to PageMethods.getYahoo(query string, responseFunction);
Here's the code behind
[WebMethod]
public static string getYahoo(string url)
{
String result;
OAuthBase oauth = new OAuthBase();
Uri uri = new Uri("http://mysite.com");
string a, qstring = "";
string signature = oauth.GenerateSignature(uri, "-my consumer key-", "-my
secret-", out a, out qstring);
url = url.Replace("{oauth}", qstring + "oauth_signature=" + signature);
WebResponse objResponse;
WebRequest objRequest = System.Net.HttpWebRequest.Create(url);
objResponse = objRequest.GetResponse();
using (StreamReader sr =
new StreamReader(objResponse.GetResponseStream()))
{
result = sr.ReadToEnd();
sr.Close();
}
return result;
}
here is my GenerateSignature method in oAuthBase class:
public string GenerateSignature(Uri url, string consumerKey, string
consumerSecret, out string normalizedUrl, out string
normalizedRequestParameters)
{
normalizedUrl = null;
normalizedRequestParameters = null;
string signatureBase = GenerateSignatureBase(url, consumerKey,null
,null,null,GenerateTimeStamp(),GenerateNonce(), HMACSHA1SignatureType, out
normalizedUrl, out normalizedRequestParameters);
HMACSHA1 hmacsha1 = new HMACSHA1();
hmacsha1.Key = Encoding.ASCII.GetBytes(string.Format("{0}&{1}",
UrlEncode(consumerSecret), ""));
return GenerateSignatureUsingHash(signatureBase, hmacsha1);
}
But we keep getting the error:
Message: Sys.Net.WebServiceFailedException: The开发者_JS百科 server method 'getYahoo' failed
with the following error: System.Net.WebException-- The remote server returned
an error: (401) Unauthorized.
Line: 6934
Char: 21
Code: 0
I hope someone here can help...!
You could use my .NET library or looking into the source code of it for using BOSS v2. An example of using the lib you can find here.
精彩评论