Jump to content

API authentication


Ciro Marciano

Recommended Posts

ciao a tutti, questo è il mio primo post.

Ho bisogno di un aiuto nella fase di autenticazione alle API di PS.

(Al momento sto utilizzando Postman prima di inserire nel mio codice di applicazione le chiamate).

Se utilizzo una chiamata tipo questa:

https://ncssrl.com/pshop/api/countries/?ws_key=myapikey

vedo correttamente le anagrafiche (solo i codici) nel JSON di ritorno.

Non riesco però ad aggiungere altri parametri alla chiamata, ad esempio, se provo a richiedere un blank schema per fare un inserimento in questa maniera:

https://ncssrl.com/pshop/api/countries/?ws_key=myapikey/?schema=blank

ottengo 401 Unauthorized

come mai?

 

Link to comment
Share on other sites

On 5/31/2021 at 5:10 PM, Ciro Marciano said:

ciao a tutti, questo è il mio primo post.

Ho bisogno di un aiuto nella fase di autenticazione alle API di PS.

(Al momento sto utilizzando Postman prima di inserire nel mio codice di applicazione le chiamate).

Se utilizzo una chiamata tipo questa:

https://ncssrl.com/pshop/api/countries/?ws_key=myapikey

vedo correttamente le anagrafiche (solo i codici) nel JSON di ritorno.

Non riesco però ad aggiungere altri parametri alla chiamata, ad esempio, se provo a richiedere un blank schema per fare un inserimento in questa maniera:

https://ncssrl.com/pshop/api/countries/?ws_key=myapikey/?schema=blank

ottengo 401 Unauthorized

come mai?

 

Buondì

lo so i ws di prestashop sono un po' ostici all'inizio

Innanzi tutto  ecco la documentazione ufficiale: https://devdocs.prestashop.com/1.7/webservice/getting-started/

La chiave la devi creare nel BO e devi attivare le entity su cui vuoi operare, ma credo tu lo sappia

Ora che hai la chiave, per le chiamate da server la chiave la devi codificare con un encode base 64 (cerca su google per farlo con php)

In header della richiesta ti basta aggiungere:  Authorization: Bearer <chiave in 64>

Per il JSON ti conviene inserire l'opzione nella header: Output-Format: JSON

Ho allegato uno screenshot su Postman

Infine.... che tu abbia apache o nginx avrai un problema

Per apache l'.htaccess blocca l'header Authorization. Leggi questo stack overflow:  https://stackoverflow.com/questions/26475885/authorization-header-missing-in-php-post-request

Infine, c'è un noioso bug di prepstashop: ogni volta che entri nella configurazione dei ws e salvi, PS rigenera htaccess e cancella la modifica appena descritta

Per nginx non son aiutarti, non ci ho messo mano.

Spero ti possano servire queste informazioni. Nel caso contattami via mail. Trovai dal mio sito  bwlab.it

saluti

 

 

 

 

ws.png

Link to comment
Share on other sites

infatti non riesco a passare l'api key nell'header e sono costretto a passarlo nell'url.

Sono riuscito ad avere il blank schema, adesso lo modifico in plain text e lo reinvio in POST, ma con quale url?

https://ncssrl.com/pshop/api/countries/?ws_key=myapikey

sempre lo stesso?

basta modificare l'xml o va aggiunto altro, ad esempio questo è il blank ricevuto

<?xml version="1.0" encoding="UTF-8"?>
<prestashop xmlns:xlink="http://www.w3.org/1999/xlink">
<country>
    <id></id>
    <id_zone></id_zone>
    <id_currency></id_currency>
    <call_prefix></call_prefix>
    <iso_code></iso_code>
    <active></active>
    <contains_states></contains_states>
    <need_identification_number></need_identification_number>
    <need_zip_code></need_zip_code>
    <zip_code_format></zip_code_format>
    <display_tax_label></display_tax_label>
    <name><language id="1"></language></name>
</country>
</prestashop>

 

basta fare cosi?

<?xml version="1.0" encoding="UTF-8"?>
<prestashop xmlns:xlink="http://www.w3.org/1999/xlink">
<country>
    <id>9999</id>
    <id_zone>1</id_zone>
    <id_currency>0</id_currency>
    <call_prefix>99</call_prefix>
    <iso_code>ZZ</iso_code>
    <active>0</active>
    <contains_states>0</contains_states>
    <need_identification_number>0</need_identification_number>
    <need_zip_code>1</need_zip_code>
    <zip_code_format>NNNNN</zip_code_format>
    <display_tax_label>1</display_tax_label>
    <name><language id="1"></language></name>
</country>
</prestashop>

 

Edited by Ciro Marciano (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...