带有 ETSY API 的网络服务

问题描述 投票:0回答:1

我想使用 ETSY API(使用 ASP.net CORE API)为自己编写一个 Web 服务。

我不知道如何使用 ETSY API。

例如,我想列出过去 2 个月内开业和销量最多的产品和商店。

我有 2-3 个简单的疑问。我该怎么办?

首先我需要通过Authentication部分等等。你有例子吗?也可以用不同的编程语言来完成,最终足以回答 2-3 个查询。

请联系我可以联系的任何可以支持我的人...

我从 ETSY API 端收到了我的 KEYSTRING 和 SHARED SECRET 值。我猜它不活跃。

我已经等了3天了。有谁知道这个过程的长度吗?

c# web-services asp.net-core-webapi etsy
1个回答
0
投票

我认为你应该阅读他们的文档。有关于 esty api 的很棒的文档。你可以在这里找到 https://www.etsy.com/developers/documentation/getting_started/api_basics

除此之外,Manuel Reinfurt 有一篇很棒的文章。您可以在这里找到 - https://manuelreinfurt.medium.com/use-etsy-api-with-oauth-1-0-in-asp-net-核心-c-819fb6edd376

完整的源代码可以在这里找到 -https://github.com/mreinfurt/etsy-aspnetcore

基本上,您需要执行以下操作

  1. 从 Etsy 获取登录 URL
  2. 将用户重定向到登录 URL。
  3. 成功登录后,用户将被重定向到我们的回调URL。
  4. 处理回调请求以从我们的用户处获取令牌。
  5. 从 Etsy API 请求实际的访问令牌

Etsy 使用开放 API 身份验证。为此,您可以在此处使用此块包 - https://github.com/rhargreaves/oauth-dotnetcore

按照文章中提到的编写代码。编写启动文件如下。

public class Startup
{
   public void ConfigureServices(IServiceCollection services)
   {
      services.AddControllers();
   }

   public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
   {
      if (env.IsDevelopment())
      {
          app.UseDeveloperExceptionPage();
      }

      app.UseRouting();
      app.UseEndpoints(endpoints =>
      {
          endpoints.MapControllers();
      });
  }
}

然后在控制器中创建如下所示的属性

[Route("api/[controller]/[action]")]
[ApiController]
public class EtsyController : ControllerBase
{
    private const string RequestUrl = 
     "https://openapi.etsy.com/v2/oauth/request_token";
   private const string RequestAccessTokenUrl = 
     "https://openapi.etsy.com/v2/oauth/access_token";

   private const string ConsumerKey = "YOUR_CONSUMER_KEY";
    private const string ConsumerSecret = "YOUR_CONSUMER_SECRET";
}

然后对于登录和重定向,您需要编写以下代码

 private static string TokenSecret { get; set; }

[HttpGet]
public IActionResult Login()
{
   // Configure our OAuth client
   var client = new OAuthRequest
   {
      Method = "GET",
      Type = OAuthRequestType.RequestToken,
      SignatureMethod = OAuthSignatureMethod.HmacSha1,
      ConsumerKey = ConsumerKey,
      ConsumerSecret = ConsumerSecret,
      RequestUrl = RequestUrl,
       CallbackUrl = "https://localhost:5001/api/etsy/callback"
   };

    // Build request url and send the request
   var url = client.RequestUrl + "?" + client.GetAuthorizationQuery();
   var request = (HttpWebRequest)WebRequest.Create(url);
   var response = (HttpWebResponse)request.GetResponse();

   using var dataStream = response.GetResponseStream();
   var reader = new StreamReader(dataStream);
   var responseFromServer = reader.ReadToEnd();

   // Parse login_url and oauth_token_secret from response
  var loginUrl = 
     HttpUtility.ParseQueryString(responseFromServer).Get("login_url");
   TokenSecret = HttpUtility.ParseQueryString(responseFromServer).Get("oauth_token_secret");

   // User will automatically be redirected to the Etsy login website
   return Redirect(loginUrl);
}

然后处理并回调代码如下。

private static string OAuthToken { get; set; }
private static string OAuthTokenSecret { get; set; }

 [HttpGet]
public IActionResult Callback()
{
   // Read token and verifier
  string token = Request.Query["oauth_token"];
  string verifier = Request.Query["oauth_verifier"];

  // Create access token request
  var client = new OAuthRequest
  {
    Method = "GET",
    Type = OAuthRequestType.RequestToken,
    SignatureMethod = OAuthSignatureMethod.HmacSha1,
    ConsumerKey = ConsumerKey,
    ConsumerSecret = ConsumerSecret,
    Token = token,
    TokenSecret = TokenSecret,
    RequestUrl = RequestAccessTokenUrl,
    Verifier = verifier
};

// Build request url and send the request
var url = client.RequestUrl + "?" + client.GetAuthorizationQuery();
var request = (HttpWebRequest)WebRequest.Create(url);
var response = (HttpWebResponse)request.GetResponse();

using var dataStream = response.GetResponseStream();
var reader = new StreamReader(dataStream);
var responseFromServer = reader.ReadToEnd();

// Parse and save access token and secret
OAuthToken = HttpUtility.ParseQueryString(responseFromServer).Get("oauth_token");
OAuthTokenSecret = HttpUtility.ParseQueryString(responseFromServer).Get("oauth_token_secret");

return Ok();
 }

然后从 Etsy 帐户获取订单,如下所示。

[HttpGet]

公共异步任务 OpenOrders() { const string requestUrl = "https://openapi.etsy.com/v2/shops/YOURSHOPNAME/receipts/open?";

var client = new OAuthRequest
{
    Method = "GET",
    Type = OAuthRequestType.ProtectedResource,
    SignatureMethod = OAuthSignatureMethod.HmacSha1,
    ConsumerKey = ConsumerKey,
    ConsumerSecret = ConsumerSecret,
    Token = OAuthToken,
    TokenSecret = OAuthTokenSecret,
    RequestUrl = requestUrl,
};

var url = requestUrl + client.GetAuthorizationQuery();
var result = await url.GetStringAsync();
return Content(result, "application/json");
   }

您可以从开头分享的链接中获得更多想法!

© www.soinside.com 2019 - 2024. All rights reserved.