Вкусный API и Yahoo oAuth в .NET
-
22-09-2019 - |
Вопрос
Тот факт, что 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» без дополнительной информации.
Я вижу, что у многих людей есть такая же проблема, но они не могут найти решения.
Решение
Ответ: «Не используйте HMAC-SHA1 на этом этапе.Также я забыл включить callbackUrl в свою подпись.