Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Objective-C) Create Restricted Data Token (RDT)See more Amazon SP-API ExamplesReturns a Restricted Data Token (RDT) for one or more restricted resources that you specify. For more information, see https://developer-docs.amazon.com/sp-api/docs/tokens-api-v2021-03-01-reference#post-tokens2021-03-01restricteddatatoken
#import <CkoAuthAws.h> #import <CkoRest.h> #import <CkoJsonObject.h> #import <NSString.h> #import <CkoStringBuilder.h> // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. CkoAuthAws *authAws = [[CkoAuthAws alloc] init]; authAws.AccessKey = @"AWS_ACCESS_KEY"; authAws.SecretKey = @"AWS_SECRET_KEY"; authAws.ServiceName = @"execute-api"; // Use the region that is correct for your needs. authAws.Region = @"eu-west-1"; CkoRest *rest = [[CkoRest alloc] init]; BOOL bTls = YES; int port = 443; BOOL bAutoReconnect = YES; // The sandbox endpoint (sandbox.sellingpartnerapi-eu.amazon.com) fails. // Use the production endpoint and see the note below. BOOL success = [rest Connect: @"sellingpartnerapi-eu.amazon.com" port: [NSNumber numberWithInt: port] tls: bTls autoReconnect: bAutoReconnect]; if (success == NO) { NSLog(@"%@",rest.LastErrorText); return; } success = [rest SetAuthAws: authAws]; // Load the previously obtained LWA access token. // See Fetch SP-API LWA Access Token CkoJsonObject *jsonToken = [[CkoJsonObject alloc] init]; success = [jsonToken LoadFile: @"qa_data/tokens/sp_api_lwa_token.json"]; if (success == NO) { NSLog(@"%@",@"Failed to load LWA access token."); return; } // Add the x-amz-access-token request header. NSString *lwa_token = [jsonToken StringOf: @"access_token"]; [rest ClearAllHeaders]; [rest AddHeader: @"x-amz-access-token" value: lwa_token]; // We're going to send a POST with the following JSON body: // { // "restrictedResources": [ // { // "method": "GET", // "path": "/orders/v0/orders", // "dataElements": ["buyerInfo", "shippingAddress"] // } // ] // } // Use this online tool to generate code from sample JSON: // Generate Code to Create JSON CkoJsonObject *json = [[CkoJsonObject alloc] init]; [json UpdateString: @"restrictedResources[0].method" value: @"GET"]; [json UpdateString: @"restrictedResources[0].path" value: @"/orders/v0/orders"]; [json UpdateString: @"restrictedResources[0].dataElements[0]" value: @"buyerInfo"]; [json UpdateString: @"restrictedResources[0].dataElements[1]" value: @"shippingAddress"]; CkoStringBuilder *sbRequest = [[CkoStringBuilder alloc] init]; [json EmitSb: sbRequest]; CkoStringBuilder *sbResponse = [[CkoStringBuilder alloc] init]; NSString *uri = @"/tokens/2021-03-01/restrictedDataToken"; success = [rest FullRequestSb: @"POST" uriPath: uri requestBody: sbRequest responseBody: sbResponse]; if (success == NO) { NSLog(@"%@",rest.LastErrorText); return; } // ------------------------------------------------------------------------------------ // Note: Using the sandbox endpoint, such as sandbox.sellingpartnerapi-eu.amazon.com // results in a response status code of 400 with the following error: // [{"code":"InvalidInput","message":"Could not match input arguments"}] // Getting a restricted data token seems to only work with the production endpoint. // ------------------------------------------------------------------------------------ // Examine the response status. int statusCode = [rest.ResponseStatusCode intValue]; if (statusCode != 200) { NSLog(@"%@%d",@"Response status code: ",statusCode); NSLog(@"%@%@",@"Response status text: ",rest.ResponseStatusText); NSLog(@"%@",@"Response body: "); NSLog(@"%@",[sbResponse GetAsString]); NSLog(@"%@",@"Failed."); return; } NSLog(@"%@",[sbResponse GetAsString]); // If successful, gets a JSON response such as the following: // { // "expiresIn": 3600, // "restrictedDataToken": "Atz.sprdt|AYAB.....TQ=" // } // Use this online tool to generate parsing code from sample JSON: // Generate Parsing Code from JSON CkoJsonObject *jsonResp = [[CkoJsonObject alloc] init]; [jsonResp LoadSb: sbResponse]; int expiresIn = [[jsonResp IntOf: @"expiresIn"] intValue]; NSString *restrictedDataToken = [jsonResp StringOf: @"restrictedDataToken"]; // Save the RDT for subsequent use.. success = [jsonResp WriteFile: @"qa_data/tokens/sp_api_rdt_token.json"]; NSLog(@"%@",@"Success!"); |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.