Возникли проблемы при реализации Yahoo BOSS v2 с OAuth в .net / C # - PullRequest
0 голосов
/ 19 мая 2011

Я пытался создать простую страницу поиска, используя API Yahoo BOSS v2, но не могу заставить OAuth работать должным образом. У меня есть все ключи и т. Д., И я загрузил класс C # для OAuth со http://oauth.googlecode.com/svn/code/csharp/OAuthBase.cs, но продолжаю получать ошибки.

Мы пробовали следующее:

функция javascript создает строку запроса босса Yahoo, а затем приводит к PageMethods.getYahoo (строка запроса, responseFunction);

Вот код, стоящий за

[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;
}

вот мой метод GenerateSignature в классе oAuthBase:

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);  

}  

Но мы продолжаем получать ошибку:

Message: Sys.Net.WebServiceFailedException: The 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

Я надеюсь, что кто-то здесь может помочь ...!

1 Ответ

0 голосов
/ 03 августа 2011

Вы можете использовать мою .NET библиотеку или просмотреть ее исходный код для использования BOSS v2.Пример использования lib вы можете найти здесь .

...