我想使用 ETSY API(使用 ASP.net CORE API)为自己编写一个 Web 服务。
我不知道如何使用 ETSY API。
例如,我想列出过去 2 个月内开业和销量最多的产品和商店。
我有 2-3 个简单的疑问。我该怎么办?
首先我需要通过Authentication部分等等。你有例子吗?也可以用不同的编程语言来完成,最终足以回答 2-3 个查询。
请联系我可以联系的任何可以支持我的人...
我从 ETSY API 端收到了我的 KEYSTRING 和 SHARED SECRET 值。我猜它不活跃。
我已经等了3天了。有谁知道这个过程的长度吗?
我认为你应该阅读他们的文档。有关于 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
基本上,您需要执行以下操作
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");
}
您可以从开头分享的链接中获得更多想法!