Восхитительный API и Yahoo oAuth в .NET - PullRequest
2 голосов
/ 28 марта 2010

Тот факт, что Delicious имеет два набора аутентификаций API, один с именем пользователя и паролем, а другой с oAuth, рассказал мне кое-что о том, что я собирался испытать, и я не ошибся. К сожалению, сейчас мне приходится иметь дело с обоими API, и мне не удается преодолеть первое препятствие API v2 (Yahoo oAuth).

Вот фрагмент кода (в этом примере я использую OpenSocial http://code.google.com/p/opensocial-net-client)

public static string GetRequestToken(string callbackUrl)
{
    string normaluri;
    string normaluriparam;
    OAuthBase oAuth = new OAuthBase();
    string nonce = oAuth.GenerateNonce();
    string timeStamp = oAuth.GenerateTimeStamp();
    string sig = oAuth.GenerateSignature(new Uri(TOKEN_URL), ConfigurationManager.AppSettings[CONSUMER_KEY],
                                         ConfigurationManager.AppSettings[SECRET_KEY],
                                         string.Empty,
                                         string.Empty,
                                         "GET",
                                         timeStamp,
                                         nonce,
                                         OAuthBase.SignatureTypes.HMACSHA1,
                                         out normaluri,
                                         out normaluriparam);
    sig = HttpUtility.UrlEncode(sig);

    string result =
        HttpClient.Get(TOKEN_URL, new
                                      {
                                          oauth_nonce = nonce,
                                          oauth_timestamp = timeStamp,
                                          oauth_consumer_key = ConfigurationManager.AppSettings[CONSUMER_KEY],
                                          oauth_signature_method = "HMAC-SHA1",
                                          oauth_signature = sig,
                                          oauth_version = "1.0",
                                          oauth_callback = callbackUrl
                                      });

    return result;
}

Кажется, это не имеет значения, если я сам следую инструкциям на http://delicious.com/help/oauthapi или оставлю это для OpenSocial, я получаю "401 Unauthorized" с сервера без дополнительной информации.

Я вижу, что у многих людей такая же проблема, но не удалось найти решение.

1 Ответ

1 голос
/ 30 марта 2010

Ответ: «Не используйте HMAC-SHA1 для этой стадии. Также я забыл включить callbackUrl в мою подпись.

...