【问题标题】:Access Etsy API oauth using c# RestSharp使用 c# RestSharp 访问 Etsy API oauth
【发布时间】:2013-09-18 15:05:11
【问题描述】:

我在我们的商店下设置了一个开发者帐户,以访问我们的销售收据。我决定使用 RestSharp 来提出我的请求。我已经证明它适用于不需要 Oauth 的调用。我已成功收到我的 accessToken 和 accessTokenSecret。因此,我将它们与 customerKey 和 customerSecret 一起使用来进行 ForProtectedResource 调用,用于如下的 oauth 请求,但始终收到“此方法需要身份验证”。

我希望我缺少一些简单的东西。我想,我需要打的所有电话都是这四项正确的吗?一旦我有了这四个项目,我就不必再请求或访问令牌了,对吗?谢谢

        var access_token = "#########################";
        var access_token_secret =  "########";

        var baseUrl = "https://openapi.etsy.com/v2";
        var client = new RestClient(baseUrl);
        client.Authenticator = OAuth1Authenticator.ForProtectedResource(consumerKey,
                                                      consumerSecret,
                                                      access_token,
                                                      access_token_secret);


        var request = new RestRequest("shops/########/receipts");
        request.Method = Method.GET;
        request.AddParameter("api_key", consumerKey);

       client.ExecuteAsync(request, response =>
        {
            var r = response;
        });

【问题讨论】:

    标签: c# oauth restsharp etsy


    【解决方案1】:

    经过反复试验,我终于开始了解 OAuth 以及 Etsy 的实现方式。 api_key 参数仅在您调用不需要 OAuth 的方法时使用。否则,您必须向其发送所有必需的 OAuth 参数。下面是工作代码。我利用了 RestSharp,以及我找到的这个 OAuth 基础 here。希望这可以帮助一些可怜的 sap 盯着糟糕的代码 3 天(真的像你的那样)。

            var restClient = new RestClient(baseUrl);
            OAuthBase oAuth = new OAuthBase();
    
            string nonce = oAuth.GenerateNonce();
            string timeStamp = oAuth.GenerateTimeStamp();
            string normalizedUrl;
            string normalizedRequestParameters;
            string sig = oAuth.GenerateSignature(new Uri(baseUrl + MethodLocation), consumerKey, consumerSecret, Accesstoken, AccessTokenSecret, "GET", timeStamp, nonce, out normalizedUrl, out normalizedRequestParameters);
           // sig = HttpUtility.UrlEncode(sig);
    
    
            var request = new RestRequest(MethodLocation);
            request.Resource = string.Format(MethodLocation);
            request.Method = Method.GET;
           // request.AddParameter("api_key", consumerKey);
            request.AddParameter("oauth_consumer_key", consumerKey);
            request.AddParameter("oauth_token", Accesstoken);
            request.AddParameter("oauth_nonce", nonce);
            request.AddParameter("oauth_timestamp", timeStamp);
            request.AddParameter("oauth_signature_method", "HMAC-SHA1");
            request.AddParameter("oauth_version", "1.0");
            request.AddParameter("oauth_signature", sig);
    
            restClient.ExecuteAsync(request, response =>
            {
                var r = response;
            });
    

    【讨论】:

    • 你能做一个asp.net(网页)的例子吗?除了一些基本的 PHP 之外,Etsy api 的 OAuth 示例为零。
    • 我可以在 Windows 窗体应用程序中使用它吗?
    • 我不知道如何使用它。 Etsy 只给了我secretSecret。如何获取AccessTokenAccessSecret
    • 您将“MethodLocation”定义为什么?
    猜你喜欢
    • 2015-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-13
    • 2023-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多