Ho aggiunto il codice javascript in wordpress per per aggiungere il widget della chat. Al momento del caricamento effetto la chiamata window.tiledesk.signInWithCustomToken(customJwt) per poter fare l’autenticazione di uno specifico utente (o non ospite) ma la chiamata restituisce un errore di non autorizzazione.
Http failure response for https://api.tiledesk.com/v2/auth/signinWithCustomToken: 401 OK",“error”:“Unauthorized”
quale può essere la ragione? il sito attualmente non è in https.
Ciao Daniela,
vuoi spiegarci meglio il tuo use case? Capisco che stai utilizzando l’autenticazione JWT.
Vuoi autenticare l’utente che hai già su Wordpress?
Quali guide stai utilizzando? Così posso aiutarti.
Andrea
al caricamento del sito in wordpress voglio che se un utente wordpress sia autenticato allora il widget della chat si apra con i dati di questo stesso utente e quindi che compaia nell’amministrazione come utente autenticato e non cope ospite. Tramite un plugin per l’inserimento di javascript in header ho aggiunto il seguente codice:
<script type="application/javascript">
var projectidTiledesk = idProjectMioAccountTiledesk;
jQuery( function( $ )
{
window.tiledeskSettings=
{
projectid: projectidTiledesk,
isLogEnabled: false,
//autoStart: false
};
(function(d, s, id)
{
var w=window; var d=document; var i=function(){i.c(arguments);};
i.q=[]; i.c=function(args){i.q.push(args);}; w.Tiledesk=i;
var js, fjs=d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js=d.createElement(s);
js.id=id; js.async=true; js.src="https://widget.tiledesk.com/v5/launch.js";
fjs.parentNode.insertBefore(js, fjs);
}
(document,'script','tiledesk-jssdk'));
(function(d, s, id)
{
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js=d.createElement(s);
js.id=id; js.src="https://widget.tiledesk.com/v5/launch.js";
fjs.parentNode.insertBefore(js, fjs);
}
(document,'script','tiledesk-jssdk'));
window.Tiledesk('onLoadParams', function(event_data)
{
$.ajax({
method: "POST",
url: efacile_ajax.url,
data: {
action: 'createJWTCardEfacileAuthenticate'
},
success: function(response)
{
console.log("result: " + response);
if(response != "" && response != 0) //data != null && data.TokenJWT != "" && data.ProjectId == projectidTiledesk)
{
window.tiledesk.signInWithCustomToken(response);
}
//$("#coupon_code").val(data);
console.log("SUCCESS CALL AJAX createJWTCardEfacileAuthenticate");
},
error: function(error){
console.log("FAIL CALL AJAX createJWTCardEfacileAuthenticate");
}
});
});
})
</script>
Praticamente ho aggiunto la parte di codice per la visualizzazione del widget e poi ho dichiarato una funzione da eseguire al momento del caricamento dei parametri, in questa funzione richiamo un ulteriore funzione php definita nel mio plugin che recupera il tokenJWT (creato con i dati dell'utente) da passare poi al metodo window.tiledesk.signInWithCustomToken(tokenJWT).
Questa procedura funziona se io la eseguo in un sito wordpress di test (installato in localhost) ma non funziona sul sito creato che è effettivamente on line che al momento non dispone del certificato quindi la navigazione non è in https.
Questa autenticazione con window.tiledesk.signInWithCustomToken(tokenJWT) mi restituisce un errore di non autorizzazione Http failure response for https://api.tiledesk.com/v2/auth/signinWithCustomToken: 401 OK",“error”:“Unauthorized” e non capisco perchè. dove è il problema visto che utilizzando lo stesso id progetto in localhost funziona.
Nel mio account ho creato due progetti con il primo non mi da errore di autenticazione mentre con secondo si. Utilizzando l’ID del primo progetto quando faccio l’autenticazione e poi avvio la conversazione nella console mi risulta utente autenticato (con id quello impostato da me al momento della creazione del token) ma il nome e cognome non compare mi dice GUEST e non risulta tra i contatti. perchè? dove sbaglio?
La creazione del token la faccio in questo modo
Dictionary<string, object> attributes = new Dictionary<string, object>()
{
{ "numCard", cardResult.Numero }
};
Dictionary<string, object> payload = new Dictionary<string, object>()
{
{ "_id", tokenResult.ProjectId + "_" + cardResult.Numero },
{ "firstname", nomeContatto },
{ "lastname", cognomeContatto },
{ "email", emailContatto },
{ "attributes", attributes },
{ "sub", "userexternal" },
{ "aud", "https://tiledesk.com/projects/" + tokenResult.ProjectId }
};
var secretKey = System.Text.Encoding.UTF8.GetBytes(tokenResult.ShareKey);
token = "JWT " + JWT.Encode(payload, secretKey, JwsAlgorithm.HS256);
Ciao Daniela.
Scrivi un messaggio a support@tiledesk.com, così possiamo risolvere insieme il tuo problema.
Andrea
ciao Daniela
presta attenzione al project secret e ricordati che cambia da un progetto all’altro. Non vorrei che stessi usando lo stesso secret per entrambi i progetti.