2010-01-28 6 views
1

J'essaie de me connecter à un compte Google pour demander des photos Web Picassa avec AJAX. C'est le code:ClientLogin de l'API Google ne fonctionne pas avec AJAX

xmlhttp=new XMLHttpRequest(); 
xmlhttp.open("POST","https://www.google.com/accounts/Login",true); 
xmlhttp.send("accountType=HOSTED_OR_GOOGLE&Email=...&Passwd=...&service=lh2&source=prova"); 
document.getElementById('prova').innerHTML=xmlhttp.responseText; 

Avec cette Firebug montre un état OK 200 dans l'onglet net mais une erreur inexpliquée dans la console. Bien sûr, rien n'apparaît dans la div appelée "prova" puisque la réponse est vide.

J'essaie aussi d'ajouter cet en-tête:

xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 

Mais Firebug montre 400 Bad Request dans l'onglet Net. Pouvez-vous m'aider? Je vous remercie.

+0

Résolu! Navigateurs Firefox et nouveaux ne laissez pas faire appel AJAX pour des applications tierces pour des raisons de sécurité. Tout est expliqué ici: http://www.xml.com/pub/a/2005/11/09/fixing-ajax-xmlhttprequest-considered-harmful.html – davidgnin

Répondre

0

Vous devriez être en mesure d'afficher la réponse ajax dans firebug et de voir ce qui est posté gtting à vous - vous pouvez obtenir une erreur 200, mais toujours obtenir une erreur dans la publication. Vous n'avez pas besoin de faire quelque chose avec un AuthToken aussi?

+0

La réponse est vide :(Je veux l'AuthToken obtenir des photos de un compte picassaweb, mais je simplifierais le problème En fait, au début j'utilisais Prototype mais je décide de le faire sans frameworks dans le but de comprendre le problème – davidgnin

+0

juste un peu googlé - est-ce que le picasa api supporte réellement le javascript J'ai seulement tous les utilisé curl pour le faire. – matpol

0

ne sais pas si nous avons eu le authToken ou non ...

Voici comment je fais des xDomain Messages:

est nécessaire d'avoir une petite bibliothèque (minuscule) appelé flyJSONP, qui utilise YQL (Yahoo! Query Language) comme un hack JSONP. Fonctionne très bien, mais ne peut pas afficher/obtenir des en-têtes. Après, j'envoie des données à php qui fait ensuite une publication inter-domaine avec l'en-tête nécessaire.

FlyJSONP travaille également avec get ... FlyJSONP.get ({...

FlyJSONP.post({ 
     url: "https://www.google.com/accounts/ClientLogin", 
     parameters: { 
      name: "value" 
     }, 
     success: function(data) { 
      console.log("the response is: " + data); 
     }, 
     error: function(errorMsg) { 
      console.log(errorMsg); 
     }, 
     complete: function(data){ 
      console.log("...completed post!"); 
     } 
    }); 
Questions connexes