API Delicious e Yahoo oAuth in .NET
-
22-09-2019 - |
Domanda
Il fatto che Delicious ha due serie di autenticazioni API uno con nome utente e password e uno con OAuth mi ha detto qualcosa circa le cose che stavo per vivere e non mi sbagliavo. Purtroppo non ho a che fare con entrambe le API ora e sono riuscito ottenere attraverso il primo ostacolo di API v2 (Yahoo oAuth).
Ecco un frammento di codice (sto usando OpenSocial in questo esempio 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;
}
Sembra non importa se seguo le istruzioni a http://delicious.com/help/oauthapi mi di lasciare a OpenSocial, ottengo un "401 non autorizzato" dal server senza ulteriori informazioni.
Posso vedere molte persone hanno lo stesso problema, ma non abbiamo trovato nessuna risoluzione.
Soluzione
La risposta è "non utilizzare HMAC-SHA1 per questa fase. Inoltre ho dimenticato di includere callbackUrl nella mia firma.