|  | 
Chilkat  HOME  Android™  AutoIt  C  C#  C++  Chilkat2-Python  CkPython  Classic ASP  DataFlex  Delphi DLL  Go  Java  Node.js  Objective-C  PHP Extension  Perl  PowerBuilder  PowerShell  PureBasic  Ruby  SQL Server  Swift  Tcl  Unicode C  Unicode C++  VB.NET  VBScript  Visual Basic 6.0  Visual FoxPro  Xojo Plugin
| (Ruby) Egyptian eReceipt OAuth2 Client CredentialsSee more Egypt eReceipt ExamplesGet an OAuth2 access token for the Egyptian eReceipt REST API using client credentials (no interactivity with a web browser required).Note: This example requires Chilkat v11.0.0 or greater. For more information, see https://sdk.invoicing.eta.gov.eg/ereceiptapi/01-authenticate-pos/ 
 require 'chilkat' success = false # This example assumes the Chilkat API to have been previously unlocked. # See Global Unlock Sample for sample code. http = Chilkat::CkHttp.new() # Note: Any provider of a REST API, such as the Egyptian government in this case, can make life # much easier for developers by providing one or more of the following in the API documentation: # # 1) A sample CURL statement for each API call. # 2) A Postman collection, or Swagger/OpenAPI specification file. # 3) A sample of a raw HTTP request and response for each API call. # # The sample CURL statements or raw HTTP request/responses do not need to comprehensively show all # possible options. Providing a sample allows one to quickly make a successful API call. # It also allows for code generation directly from the CURL, Postman collection, or raw request/response, # and it tends to answer all questions about the format/structure of a request that, suprisingly, # remain ambiguous or not obvious in other forms of documentation. req = Chilkat::CkHttpRequest.new() req.AddParam("grant_type","client_credentials") # Use your actual client ID and client secret... req.AddParam("client_id","d0394a9f-0607-40de-a978-2d3eb8375b04") req.AddParam("client_secret","6d62315e-d65a-4e41-9112-4195ea834edf") req.AddHeader("posserial","1234567899") req.AddHeader("pososversion","os") req.AddHeader("posmodelframework","1") req.AddHeader("presharedkey","03ac674216f3e1...") # When writing this example, the documentation at https://sdk.invoicing.eta.gov.eg/ereceiptapi/01-authenticate-pos/ # shows us the HTTP verb and path (POST /connect/token), however, # we don't see the actual domain where the request is to be sent. # What are the endpoints??? # It took some searching, but we found some endpoints here: https://sdk.invoicing.eta.gov.eg/faq/ # It's not immediately apparent which endpoint is to be used with a given API call. # Why not just include the endpoint in the documentation for each REST API call? # Endpoints are literally the #1 thing that needs to be known. # They can't just be buried in a FAQ. They should be up-front and obvious. # # So.. we're guessing the endpoint is likely "https://invoicing.eta.gov.eg/connect/token" req.put_HttpVerb("POST") req.put_ContentType("application/x-www-form-urlencoded") resp = Chilkat::CkHttpResponse.new() success = http.HttpReq("https://invoicing.eta.gov.eg/connect/token",req,resp) if (success == false) print http.lastErrorText() + "\n"; exit end sbResponseBody = Chilkat::CkStringBuilder.new() resp.GetBodySb(sbResponseBody) jResp = Chilkat::CkJsonObject.new() jResp.LoadSb(sbResponseBody) jResp.put_EmitCompact(false) print "Response Body:" + "\n"; print jResp.emit() + "\n"; respStatusCode = resp.get_StatusCode() print "Response Status Code = " + respStatusCode.to_s() + "\n"; if (respStatusCode >= 400) print "Response Header:" + "\n"; print resp.header() + "\n"; print "Failed." + "\n"; exit end # If successful, the OAuth2 access token JSON looks like this: # { # "token_type": "Bearer", # "access_token": "eyJraW......R2sbqrY", # "expires_in": "3600", # "scope": "..." # } token_type = jResp.stringOf("token_type") access_token = jResp.stringOf("access_token") expires_in = jResp.stringOf("expires_in") scope = jResp.stringOf("scope") | ||||
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.