.NET中的美味API和Yahoo oAuth

时间:2010-03-28 15:57:58

标签: oauth yahoo opensocial delicious-api

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 个答案:

答案 0 :(得分:1)

答案是“不要在此阶段使用HMAC-SHA1。而且我忘了将callbackUrl包含在我的签名中。