MICHELEPISANI.IT
 

Esempio per il recupero del token di autenticazione da API

Recupero Parametri da JSONP con Google Apps Script

June 22
07:202017

Un metodo per effettuare una richiesta dati (in GET o POST) da un server che risiede in un dominio diverso da quello del client (superando pertanto la barriera del cross-domain per la famosa same-origin policy), ad esempio un'interrogazione alle API, è quello di utilizzare JSONP, acronimo di JSON con padding.

Quello che viene restituito dal server non è altro che un JSON racchiuso come parametro all'interno di una funzione (da qui il termine "padding") che potrà successivamente essere interpretata dal browser e gestita.

In rete ci sono diversi esempi che ne dimostrano l'uso con jQuery e la relativa funzione 'ajax', in questo articolo mostrerò come poter gestire la risposta JSONP ad una chiamata alle API con Google Apps Script.

Di seguito un esempio di interrogazione alle API per effettuare un'autenticazione ad un web service esterno ed ottenerne il token di accesso per l'utilizzo dei relativi servizi (notare il parametro 'callback' nell'url interrogato):

var url = "https://api.esempio.com/services/login?username=xxxxx&password=yyyyy&callback=JsonPCallBack";
var options = {};
var response = eval(UrlFetchApp.fetch(url, options).getContentText());

function JsonPCallBack(jsonparam) {
var token = jsonparam.token;
return token;
}

In questo modo, all'interno della variabile 'response', avrò il mio token da utilizzare per usufruire dei servizi di cui necessito su quel particolare web services.

Per spiegare quello che succede, effettuando la chiamata:

UrlFetchApp.fetch(url, options).getContentText()

Quello che otteniamo è una risposta simile alla seguente:

JsonPCallBack({"token":"qwerty12345asdfg"})

...che ha appunto tutto l'aspetto di una chiamata ad una funzione di nome 'JsonPCallBack' (che è il nome che è stato indicato come valore del parametro 'callback' all'interno dell'url dell'API) che passa un JSON come parametro il quale contiene la risposta di nostro interesse (il token).
Per poter recuperare il parametro è necessario creare una funzione che lo passi e che abbia lo stesso nome di quella definita e gestirne il contenuto come un comune JSON (come nell'esempio appena visto).

Poiché la risposta in JSONP viene interpretata come una stringa, e pertanto a condizioni normali non avrebbe alcun effetto e non effettuerebbe alcuna chiamata alla funzione in essa contenuta, è necessario avvalersi del metodo eval() al fine di eseguire tale codice JavaScript:

eval(UrlFetchApp.fetch(url, options).getContentText())

Se ci sono domande o dubbi sentitevi liberi di lasciare un commento qua sotto!

Tags

Autore

Michele Pisani

Michele Pisani

Ho uno spiccato orientamento al problem-solving, se è troppo facile non mi diverto :)
Credo nella volontà e nel cambiamento perchè hanno fatto della mia passione il mio pane quotidiano.
Se devo descrivermi con una sola parola direi... "Concretezza", la mia stretta di mano è una garanzia.

0 Commenti

Non ci sono commenti

Nessuno ha ancora commentato questo articolo, fallo tu per primo!

Scrivi un Commento

Scrivi un Commento

Il tuo indirizzo email non sarà pubblicato.
I campi contrassegnati da un * sono obbligatori

Articoli e Argomenti correlati

Il Canale YouTube in ITALIANO

1 VIDEO GRATIS ogni 2 settimane! ISCRIVITI!

Entra a far parte della community su Facebook

Categorie popolari

Iscriviti alla mia newsletter

La tua e-mail con me sarà al sicuro.
Non fornirò mai le tue informazioni a nessuno!

Ultimi commenti

MASSIMO BERNARDI

ho cercato ma non ho trovato niente se non dei sensori di passaggio tipo passaggio sotto entrata di …

Michele Pisani

Ciao Massimo, sia i sensori che un sistema già pronto (in base alle tue esigenze) li puoi …

MASSIMO BERNARDI

CIAO A ME SERVIREBBERO QUATTRO SENSORI COSì PER FARE DEI TEST FISICI DOVE POSSO TROVARE UN …

Michele Pisani

Ciao Domenico, in questi casi controllerei la posta, di solito arrivano degli avvisi via email in …