Je suis actuellement en train de jouer avec les API de Google en utilisant ajax bibliothèque jquery creux. Pour utiliser une API google service, je dois obtenir un jeton d'authentification envoyant une requête à ClientLogin. En fait, je ne sais pas comment passer le jeton à la deuxième requête.Définir la réponse ajax comme variable globale
J'ai mis un jeton variable globale comme var token = null;
J'appelle deux demandes sur $(document).ready event
.
- Le premier est un https POST demande à Google ClientLogin dans afin d'obtenir jeton d'identification d'utilisateur.
est ici le code de la première demande de paiement ajax:
$.ajax({
type: "POST",
url: "https://" + host + clientLoginEntryPoint,
data: cLRequestData(accountType, user, pwd, service),
dataType: "html",
success: function (response) {
var tokenArray = response.split("="); // Split to response tokenArray[3] is the auth token
token = tokenArray[3];
$(".status").html(token);
}
}); // END OF CLIENT LOGIN REQUEST
Le second est censé appeler l'API de contacts avec un http GET.
$.ajax({ type: "GET", url: "http://" + host + googleContactEntryPoint, beforeSend: function(xhr) { xhr.setRequestHeader('Authorization', 'GoogleLogin auth=' + token); xhr.setRequestHeader('GData-Version', '3.0'); }, success: function(response, textStatus, xhr) { var names = $(response).find('entry>title').text(); $(".status").text(names); }, error: function(xhr, status, error) { $(".status").html(xhr.status+ " "+ xhr.statusText); }
}); // FIN DE GOOGLE CONTACT DEMANDE
Le problème que je suis face est que jeton est réglé sur null lorsque je tente de définir Google dans la tête Authentification deuxième demande. J'ai déjà lu link text mais cela ne fonctionne pas pour moi. Je dois maintenant faire quelque chose avec callback/événements mais je n'arrive pas à comprendre comment faire.
Toute aide appréciée
Merci beaucoup Patrick pour votre réponse. J'ai mis à jour le code mais mon script s'est cassé quand j'ai appelé la deuxième demande. Il casse lorsque je définis l'en-tête Autorisation sur la valeur de jeton. J'ai l'erreur de console suivante: Erreur: exception non interceptée: [Exception ... "Composant a renvoyé le code d'échec: 0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsIXMLHttpRequest.setRequestHeader]" nsresult: "0x80070057 (NS_ERROR_ILLEGAL_VALUE)" emplacement: "image JS: : GContactsAPI.js :: anonymous :: ligne 45 "data: non] Des idées? – anchnk
@anchnk - Avez-vous vérifié que 'token' semble correct à l'intérieur de' secondRequest() '? Je ne sais rien de la réponse que vous obtenez de la première demande, ou comment configurer correctement votre deuxième. Je ferais 'console.log (token)' dans la fonction 'secondRequest()' pour m'assurer qu'il a la valeur que vous attendez. – user113716
Oui, j'ai la même valeur que dans la réponse complète. Je vais essayer de redémarrer le navigateur et voir. Un autre point est que je fais cette demande à partir d'un fichier local à partir de maintenant. J'ai donc ajouté netscape.security.PrivilegeManager.enablePrivilege ("UniversalBrowserRead"); être en mesure d'envoyer une demande, mais je ne suis pas sûr que cela ait quelque chose à voir avec ça. – anchnk