API deliciosa e Yahoo Oauth em .NET
-
22-09-2019 - |
Pergunta
O fato de Delicious ter dois conjuntos de autenticações de API, um com nome de usuário e senha e um com Oauth me disse algo sobre coisas que eu ia experimentar e não estava errado. Infelizmente, tenho que lidar com as duas APIs agora e não tenho sucesso passando pelo primeiro obstáculo da API V2 (Yahoo Oauth).
Aqui está um trenó de código (estou usando o OpenSocial neste exemplo http://code.google.com/p/openssocial-net-cient)
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;
}
Parece que não importa se eu sigo as instruções em http://delicious.com/help/oauthapi De deixar para o OpenSocial, recebo um "401 não autorizado" do servidor sem mais informações.
Eu posso ver que muitas pessoas têm o mesmo problema, mas não conseguiram encontrar nenhuma resolução.
Solução
A resposta é "Não use o HMAC-SHA1 para este estágio. Também esqueci de incluir o chamado de chamada na minha assinatura.