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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top