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

Ciao Antonio,
ma il tuo apk si chiama 'HelloWorld-release-unsigned.apk'?

Antonio

Grazie michele per la velocità con cui hai risposto, comunque ho seguito la tua guida passo per …

Michele

Ciao Antonio,
probabilmente stai utilizzando un'opzione non prevista per jarsigner e la …

Antonio

Ricevo questo errore da cosa dipende? Illegal option\: …