使用c#RestSharp访问Etsy API oauth

使用c#RestSharp访问Etsy API oauth,c#,oauth,restsharp,etsy,C#,Oauth,Restsharp,Etsy,我在我们的商店下设置了一个开发者帐户,以访问我们的销售收据。我决定用RestSharp来提出我的请求。我已经证明它不适用于Oauth所需的调用。我已成功接收我的accessToken和accessTokenSecret。因此,我将它们与customerKey和customerSecret一起用于对oauth请求进行ForProtectedResource调用,如下所示,但始终收到“此方法需要身份验证” 我希望我错过了一些简单的东西。我想,我打电话所需要的是这四个项目对吗?一旦我有了这四项,我就不

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

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

        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;
        });

经过一番尝试和错误,我终于了解了OAuth和Etsy实现它的方式。api_key参数仅在调用none OAuth required方法时使用。否则,您必须向其发送所有必需的OAuth参数。下面是工作代码。我利用了RestSharp,以及我找到的OAuth基地。希望这能帮助一些可怜的sap避免3天盯着蹩脚的代码(就像你的代码一样)


经过一番尝试和错误,我终于了解了OAuth和Etsy实现它的方式。api_key参数仅在调用none OAuth required方法时使用。否则,您必须向其发送所有必需的OAuth参数。下面是工作代码。我利用了RestSharp,以及我找到的OAuth基地。希望这能帮助一些可怜的sap避免3天盯着蹩脚的代码(就像你的代码一样)


你能做一个asp.net(网页)的例子吗。除了一些基本的PHP,Etsy api没有OAuth的例子。我可以在Windows窗体应用程序中使用它吗?我不知道如何使用它。Etsy只给了我
secret
secret
。如何获取
AccessToken
AccessSecret
?您将“MethodLocation”定义为什么?您可以执行asp.net(网页)示例吗。除了一些基本的PHP,Etsy api没有OAuth的例子。我可以在Windows窗体应用程序中使用它吗?我不知道如何使用它。Etsy只给了我
secret
secret
。如何获取
AccessToken
AccessSecret
?您将“MethodLocation”定义为什么?
        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;
        });