MICHELEPISANI.IT
 

Esempio per il recupero del token di autenticazione da API

Recupero Parametri da JSONP con Google Apps Script

Giugno 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
Condividi

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

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

Michele Pisani

Ciao alessandro,
questa regex dovrebbe fare al caso tuo:

alessandro

ciao sto cercando una regex per numeri interi o decimali, positivi o negativi; la tua regex mi pare …

Michele Pisani

Ciao Nicola,
ti riferisci per caso alla situazione di gianluigi?
In tutti i casi la via …

Nicola

Ciao Michele, mi trovo nella medesima situazione in cui si trovava Gianluca un anno fa. Sei poi …