Eğitim: Bir C# SDK Kullanarak SP-API Çağrılarınızı Otomatikleştirin
Amazon (LWA) token değişimi ve kimlik doğrulaması ile Oturum Açma ile SP-API çağrılarınızı otomatikleştirin.
Bu eğitim, Amazon (LWA) token değişimi ile Oturum Açma (LWA) token değişimi ile bir C# SDK oluşturmak için gerekli tüm bilgileri ve uygulamanızı oluşturmak için bir kimlik doğrulaması sağlar.
Ürün bilgilerine erişme, siparişleri yönetme, gönderileri işleme ve daha fazlası dahil olmak üzere Amazon pazar yeri özelliklerini uygulamalarınıza entegre etmek için bu SDK'yı kullanabilirsiniz.
Eğitim
Aşağıdaki eğitim, SP-API çağrılarını otomatikleştirmek için kendi C# SDK'nızı kurmanıza yardımcı olacaktır.
Ön koşullar
Bu eğitimi tamamlamak için aşağıdaki ön koşullara ihtiyacınız vardır:
- Taslak veya yayınlanmış durumda bir hibrit veya SP-API uygulaması
- Entegre geliştirme ortamı (IDE) yazılımı (bu adım adım, Windows işletim sisteminde Visual Studio IDE'yi kullanır)
Başvurunuzun Satış Ortağı API'sine bağlanabilmesi için, onu kaydetmeniz ve bir satış ortağı tarafından yetkilendirilmesi gerekir. Hibrit veya SP-API uygulamanız yoksa, aşağıdaki adımları izleyin geliştirici olarak kaydolun, başvurunuzu kaydedin, ve Satış Ortağı API uygulamalarını yetkilendirme. Ardından, bu eğitime geri dönün.
Ardından, eğitim için çalışma alanınızı ayarlayın.
Adım 1. Çalışma alanınızı ayarlayın
-
Yerel sürücünüzde, bu proje için bir dizin oluşturun ve adlandırın
SwaggerToCL
. -
Aşağıdaki araçları indirin.
- IDE yazılımı (bu izlenecek yol kullanır Visual Studio (Windows işletim sisteminde IDE)
- GNU Wget
- Java 8 veya daha yenisi
-
Swagger Code Generator'ı indirmek için aşağıdaki komutu çalıştırın:
wget https://repo1.maven.org/maven2/io/swagger/swagger-codegen-cli/2.4.13/swagger-codegen-cli-2.4.13.jar -O swagger-codegen-cli.jar -
Kopyalama
swagger-codegen-cli.jar
yerel dizininizeC:\\SwaggerToCL
. -
GitHub'da şu adrese gidin
https://github.com/amzn/selling-partner-api-models/tree/main/models
ve klonlamak için aşağıdaki komutu kullanınselling-partner-api-models
yerel dizininize depoC:\\SwaggerToCL
.git clone https://github.com/amzn/selling-partner-api-models -
Şuraya git
selling-partner-api-models\\models
deponun yerel kopyasındaki klasör ve modeller alt klasörlerinden bir JSON dosyasını kopyalayınC:\\SwaggerToCL
. Bu eğitim şunları kullanır:Sellers.json
dosya. -
GitHub'da şu adrese gidin
https://github.com/amzn/selling-partner-api-models/tree/main/clients/sellingpartner-api-aa-csharp
ve indirinsellingpartner-api-aa-csharp
yerel bilgisayarınıza klasör.
Bu klasör, Amazon Satış Ortağı API'leri için bir erişim belirteci oluşturmak için yardımcı sınıflar sağlar. Tarafından üretilen Satış Ortağı API İstemci Kitaplıkları ile kullanılmak üzere tasarlanmıştır Swagger Kodları RestSharp kütüphanesini kullanarak. Ayrıca özel projelere entegre edilebilir.
Gerekli kurulumu tamamladığımıza göre artık bir sonraki adımda sellingpartner-api-aa-csharp
klasöründe sağlanan kimlik doğrulama ve yetkilendirme sınıflarıyla Java SDK'yi oluşturacağız.
Adım 2. LWA belirteç değişimi ve kimlik doğrulaması ile bir C # SDK oluşturun
-
Visual Studio'yu açın.
-
İçinde
sellingpartner-api-aa-csharp
klasör, seçinSellingPartnerAPIAuthAndAuthCSharp.sln
dosyalayın ve bunu kullanarak oluşturun geliştirmek Visual Studio'da seçenek. Bu, üretirAmazon.SellingPartnerAPIAA.dll
klasördeki montajsellingpartner-api-aa-csharp\\src\\Amazon.SellingPartnerAPIAA\\bin\\Debug\\netstandard2.0
. -
Bir terminal açın ve C# istemci kitaplığını oluşturmak için aşağıdaki komutları çalıştırın. Oluşturulan istemci kitaplığı için varsayılan paket adı
Swagger.IO
. Bu komutlar, istemci kitaplıklarını paket adı yerine ilgili API adlarıyla oluşturur.Swagger.IO
.- İçinde
C:\\SwaggerToCL
, adında bir JSON dosyası oluşturuncsharpConfig.json
, bir editör açın ve aşağıdaki kodu ekleyin. içinpackageName
, istemci kitaplığını oluşturmak istediğiniz API'nin aynı adını kullanın:
{"packageName":"SellingPartnerAPI.SellerAPI","targetFramework":"v4.7.2"}Özelleştirilmiş bir paket adıyla C# kodu oluşturmak için bu komutu çalıştırın:
java -jar C:\SwaggerToCL\swagger-codegen-cli.jar generate -i C:\SwaggerToCL\[name of model].json -l csharp -t [path to selling-partner-api-models\clients\sellingpartner-api-aa-csharp folder]\src\Amazon.SellingPartnerAPIAA\resources\swagger-codegen\templates\ -o C:\SwaggerToCL\[name of client library] -c C:\SwaggerToCL\csharpConfig.jsonBu komut kullanır
Sellers.json
C# kodu oluşturmak için:java -jar C:\SwaggerToCL\swagger-codegen-cli.jar generate -i C:\SwaggerToCL\Sellers.json -l csharp -t C:\SwaggerToCL\sellingpartner-api-aa-csharp\src\Amazon.SellingPartnerAPIAA\resources\swagger-codegen\templates\ -o C:\SwaggerToCL\Sellers_CsharpCL -c C:\SwaggerToCL\csharpConfig.jsonSDK şurada oluşturulur
C:\\SwaggerToCL\\Sellers_CsharpCL
. Bir sonraki adım, gerçek uygulamayı yazmak ve oluşturulan C # SDK'yı kullanarak SP-API'ye bağlanmaktır. - İçinde
Adım 3. Oluşturulan C# SDK'sını kullanarak Satış Ortağı API'sine bağlanın
-
Visual Studio IDE'de oluşturduğunuz kitaplığa gidin Satıcılar_CSharpcl klasörü açın ve açın
.sln
dosya..sln
paket dosyası aşağıda belirtildiği gibi isme sahip olacaktır. Adım 2. LWA belirteç değişimi ve kimlik doğrulaması ile bir C # SDK oluşturun. Bu örnekte, paket dosyası adıSellingPartnerAPI.SellerAPI.sln
. -
Sağ tıklayın
SellingPartnerAPI.SellerAPI
dosyalayın ve seçin Ekle > Referanslar. -
İçinde Referanslar pencere, seç Gözat, şuraya git
sellingpartner-api-aa csharp/src/Amazon.SellingPartnerAPIAA/bin/Debug/netstandard2.0
ve seçAmazon.SellingPartnerAPIAA.dll
. -
1-3 için adımları tekrarlayın
SellingPartnerAPI.SellerAPI.Test
dosya. -
Oluşturulan kitaplığınızdaki
Sellers_CsharpCL
klasörüne gidin,SellingPartnerAPI.SellerAPI
dosyasına sağ tıklayın, Seçenekler > Genel'i seçin ve hedef çerçeveyi .net Framework v4.7 ve üzeri olarak değiştirin. -
5. adımı tekrarlayın
SellingPartnerAPI.SellerAPI.Test
dosya. -
Sağ tıklayın
SellingPartnerAPI.SellerAPI
dosyala ve seç NuGet Paketlerini Yönet. Aşağıdaki paket sürümlerine sahip olduğunuzdan emin olun (Değilse, ilgili NuGet paketlerini yükleyin):JsonSubTypes 1.2.0
veya tümüNewtonsoft.json 12.0.3
veya tümüRestSharp 106.12.0
RateLimiter 2.2.0
veya daha yenisi (bu da yüklenecekComposableAsync.Core
)
-
Sağ tıklayın
SellingPartnerAPI.SellerAPI.Test
dosyala ve seç NuGet Paketlerini Yönet. Yükleme Ünite 2.6.4 paket.NuGet paketlerinin manuel kurulumu
Bazı durumlarda (örneğin IOS kullanırken), NuGet paketlerinde gerekli sürümler görünür ancak bir hatayla karşılaşabilirsiniz. Bu senaryoda, paketleri dosya sistemindeki paket klasöründen manuel olarak eklemeniz gerekir:
Sellers_CsharpCL
içinde, oluşturulan kitaplığınızdaki.sln
klasörüne gidip {{2}} dosyasını açın.- Sağ tıklayın
SellingPartnerAPI.SellerAPI
dosyalayın ve seçin Ekle > Referanslar. - İçinde Referanslar pencere, seç Gözat, şuraya git
sellingpartner-api-aa csharp/src/Amazon.SellingPartnerAPIAA/bin/Debug/netstandard2.0
, oluşturulan istemci kitaplığı klasörünü seçin (örneğin,Sellers_CsharpCL
), sonra seçin paketleri ve hatayla karşılaştığınız paketi ekleyin.
-
İçinde
SellingPartnerAPI.SellerAPI.Test > Api
klasör, aç[Modelname]Tests.cs
dosyalayın ve aşağıdaki kodu ekleyin:using System; using System.IO; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Reflection; using RestSharp; using SellingPartnerAPI.SellerAPI.Client; using SellingPartnerAPI.SellerAPI.Api; using SellingPartnerAPI.SellerAPI.Model; using Amazon.SellingPartnerAPIAA; namespace SellingPartnerAPI.SellerAPI.Test { class SellersApiTests { public static void Main(string[] args) { try { LWAAuthorizationCredentials lwaAuthorizationCredentials = new LWAAuthorizationCredentials { ClientId = "amzn1.application-oa2-client.******************", ClientSecret = "***********************************", RefreshToken = "Atzr|***********************************", Endpoint = new Uri("https://api.amazon.com/auth/o2/token") }; SellersApi sellersApi = new SellersApi.Builder() .SetLWAAuthorizationCredentials(lwaAuthorizationCredentials) .Build(); GetMarketplaceParticipationsResponse result = sellersApi.GetMarketplaceParticipations(); Console.WriteLine(result.ToJson()); } catch (LWAException e) { Console.WriteLine("LWA Exception when calling SellersApi#getMarketplaceParticipations"); Console.WriteLine(e.getErrorCode()); Console.WriteLine(e.getErrorMessage()); Console.WriteLine(e.Message); } catch (ApiException e) { Console.WriteLine("Exception when calling SellersApi#getMarketplaceParticipations"); Console.WriteLine(e.Message); } } } }LWAAuthorizationCredentials
örnek parametreleri:
Ad | Açıklama | Zorunlu mu? |
---|---|---|
ClientId | LWA istemci tanımlayıcınız. Daha fazla bilgi için bkz. Uygulama bilgilerinizi ve kimlik bilgilerinizi görüntüleme. | Evet |
ClientSecret | Your LWA client secret. For more information, refer to Viewing your application information and credentials | Evet |
RefreshToken | The LWA refresh token. Get this value when the selling partner authorizes your application. For more information, refer to Authorizing Selling Partner API Applications. | No. Include RefreshToken if the operation that you call in the following step requires selling partner authorization. All operations that are not grantless operations require selling partner authorization. If you include RefreshToken , do not include Scopes. |
Scopes | The scope of the LWA authorization grant. You can specify one or more Scopes values:- ScopeNotificationsAPI . For the Notifications API.- ScopeMigrationAPI . For the Authorization API. | Hayır. Scopes , aşağıdaki adımda çağırdığınız işlem izinsiz ise eklenmelidir. Scopes ekliyorsanız RefreshToken eklemeyin. |
Endpoint | LWA kimlik doğrulama sunucusu URI'si. | Evet |
Example of an operation call that requires selling partner authorization:
```csharp
using Amazon.SellingPartnerAPIAA;
LWAAuthorizationCredentials lwaAuthorizationCredentials = new LWAAuthorizationCredentials
{
ClientId = "myClientId",
ClientSecret = "myClientSecret",
RefreshToken = "Aztr|...",
Endpoint = new Uri(""https://api.amazon.com/auth/o2/token"")
};
```
Example of a grantless operation call:
```csharp
using Amazon.SellingPartnerAPIAA;
LWAAuthorizationCredentials lwaAuthorizationCredentials = new LWAAuthorizationCredentials
{
ClientId = "myClientId",
ClientSecret = "myClientSecret",
Scopes = new List<string>() { ScopeConstants.ScopeNotificationsAPI, ScopeConstants.ScopeMigrationAPI }
Endpoint = new Uri(""https://api.amazon.com/auth/o2/token"")
};
```
-
Kodun çıktısını görüntülemek için, bir konsol uygulamasına dönüştürmeniz gerekir. Bunu yapmak için sağ tıklayın
SellingPartnerAPI.SellerAPI.Test
dosyala ve seç Seçenekler. -
Üzerinde Proje Seçenekleri pencere, sol gezinme bölmesinde genişletin İnşa etmek, sonra seç General. İçinde Kod Oluşturma bölüm, seç Hedefi Derleyin ve seç GUI ile yürütülebilir. Seçiniz TAMAM.
-
Projeyi oluşturun ve çalıştırın.
C# SDK'de Sorun Giderme
IRestRequest
hataları: "RestSharp Version=105.0.0.0. Culture=neutral. PublicKevToken=598062e77f915f75
, referans verilmeyen bir assembly'de tanımlandı. {{2}} şeklindeki assembly için referans eklemeniz gerekiyor"
IRestRequest
hataları: "RestSharp Version=105.0.0.0. Culture=neutral. PublicKevToken=598062e77f915f75
, referans verilmeyen bir assembly'de tanımlandı. {{2}} şeklindeki assembly için referans eklemeniz gerekiyor"Burayı seçerek cevabı genişletebilirsiniz.
{{0}} paketini 106.12.0.0 sürümüne güncelleyin. 106.12 sürümünün başarıyla güncellendiğinden emin olmak için referansa göz atın. 105.0.0.0 sürümü gösterilmeye devam ediyorsa eski sürümü referanstan kaldırın ve 106.12.0.0 paketini, oluşturulan istemci kütüphanesinin bulunduğu paketler klasöründen manuel olarak ekleyin."{{0}} türü veya ad alanı adı bulunamadı (kullanma yönergeniz veya assembly referansınız mı eksik?)"
Yanıtı genişletmek için seçin.
In some scenarios, even though you have the required version in the NuGet
packages for Newtonsoft, you need to manually add the package from the package folder in the file system. To resolve this, use the following steps:
-
In Visual Studio, right-click your generated SDK package and choose
Add
, thenReferences
. -
.Net Assembly'deki referanslar penceresinde
browse
** öğesini seçin. -
Navigate to the generated client library folder in local → packages and add the specific package for Newtonsoft.
"Mesaj: SellingPartnerAPI.servicesApi.Client.ApiClient:rateLimiter
(3) alan türü şu nedenle yüklenemedi: ComposableAsync.Core, Version=1.1.1.0, Culture=neutral, PublicKeyToken=null
şeklindeki dosya veya assembly ya da bağımlılarından biri yüklenemedi."
SellingPartnerAPI.servicesApi.Client.ApiClient:rateLimiter
(3) alan türü şu nedenle yüklenemedi: ComposableAsync.Core, Version=1.1.1.0, Culture=neutral, PublicKeyToken=null
şeklindeki dosya veya assembly ya da bağımlılarından biri yüklenemedi."Yanıtı genişletmek için seçin.
Kodunuzu oluşturup çalıştırdıktan sonra bu hatayı alıyorsanız ComposableAsync.Core
bağımlılık paketi indirilmiş ancak referans olarak eklenmemiştir. Dll'yi manuel bir şekilde referans olarak eklediğinizden emin olun.
Modellerle ilgili eşleme sorunları
Yanıtı genişletmek için seçin.
ItemAsin
modeli, JsonObject
türüyle oluşturulmuştur ancak zorunlu ItemAttributes
dizesi için JsonObjectAttribute
gerekir. Modellerde gereken eşlemeyi içe aktarmak için Katalog Ürünleri API'sini kullanan bu komutu kullanabilirsiniz:
`java -jar swagger-codegen-cli.jar generate -i catalogItems_2022-04-01.json -l csharp -t sellingpartner-api-aa-csharp\src\Amazon.SellingPartnerAPIAA\resources\swagger-codegen\templates —import-mappings ItemAttributes=Newtonsoft.Json.JsonObjectAttribute —import-mappings ItemAsin=System.string -o catalogItems2022-04-01_import`
“HttpRequestHeaders.ToJson()
: geçersiz kılacak uygun bir yöntem bulunamadı."
HttpRequestHeaders.ToJson()
: geçersiz kılacak uygun bir yöntem bulunamadı."Yanıtı genişletmek için seçin.
override
anahtar kelimesini virtual
ile değiştirin. Yöntemler, geçersiz kılınabilmeleri için virtual
olmalıdır.
public virtual string ToJson()
{
return JsonConvert.SerializeObject(this, Formatting.Indented);
}
"BaseValidate
adı geçerli bağlamda mevcut değil"
BaseValidate
adı geçerli bağlamda mevcut değil"Yanıtı genişletmek için seçin.
Sınıfta belirtilen yöntemlerin yorumunu kaldırın:
// IEnumerable<System.ComponentModel.DataAnnotations.ValidationResult> IValidatableObject.Validate(ValidationContext validationContext)
// {
// foreach (var x in BaseValidate(validationContext))
// yield return x;
// yield break;
// }
Updated 23 days ago