2010-11-16 18 views
1

J'utilise le Google Voice APIs d'aaronpk pour envoyer et recevoir des messages SMS dans Google Voice. J'ai décommenté la ligne "extension = php_curl.dll" dans le php.ini et ai confirmé que cURL fonctionne. Je suis maintenant bloqué à ce point et je continue à recevoir cette erreur:Problèmes cURL avec les "API" Google Voice exécutées sur XAMPP/Windows 7

Uncaught exception 'Exception' with message 'Could not parse for GALX token'

J'ai vérifié toutes les choses de base. Le nom d'utilisateur et le mot de passe sur le compte sont corrects. La seule chose que je peux voir est que cURL n'écrit pas de fichiers cookie.

Je sais que le script a un chemin Linux pour le cookiejar/cookiefile par défaut. J'ai essayé de changer ceci à un répertoire de Windows, aussi bien qu'incluant le plein chemin. L'extrait de code que je utilise actuellement est:

$this->_cookieFile = dirname(__FILE__) . "\cookies.txt"; 

Même avec cette modification de code, le script n'écrit pas dans le fichier cookies.txt.

J'ai téléchargé ces scripts sur un hôte Linux et ils fonctionnent très bien, ce qui me prouve qu'il s'agit d'un problème Windows. Malheureusement, nous n'avons pas de serveur Linux pour l'environnement de production.

Je suis à la recherche de conseils pour que cela fonctionne dans Windows. En ce moment, je développe sur une machine Windows 7 exécutant XAMPP. L'environnement de production sera probablement Windows 2008 Server.

Toute aide serait grandement appréciée!

Répondre

1

Je sais que celui-ci est plutôt vieux ... mais c'est toujours agréable de partager une réponse, ouais?

Modifier le chemin du fichier cookie est bon, mais le problème ici est avec cURL essayer (et échouer) pour vérifier le certificat SSL de google. Deux solutions peuvent être trouvées here (J'ai trouvé ce lien dans the accepted answer for this other SO question)

À des fins de test, je pense qu'il serait acceptable d'utiliser la solution rapide et sale (acceptant aveuglément tous les certificats SSL sans vérifier). Vous souhaitez insérer la ligne suivante dans le constructeur de la classe GoogleVoice avec les autres lignes de curl_setopt

curl_setopt($this->_ch, CURLOPT_SSL_VERIFYPEER, FALSE); 

Pour le code de production, je vérifie le certificat. Trouver et enregistrer le certificat est couvert dans le premier lien que j'ai fourni. En supposant que le certificat est dans le même répertoire que GoogleVoice.php, vous souhaitez insérer les lignes suivantes

curl_setopt($this->_ch, CURLOPT_SSL_VERIFYPEER, TRUE); 
curl_setopt($this->_ch, CURLOPT_SSL_VERIFYHOST, 2); 
curl_setopt($this->_ch, CURLOPT_CAINFO, getcwd().'\BuiltinObjectToken-VerisignClass3PublicPrimaryCertificationAuthority.crt'); 

Je ne suis pas expert cURL, donc je ne peux pas dire s'il y a une autre façon de vérifier le certificat SSL (ou il n'est pas nécessaire sur un hôte Linux.) Cela devrait être tout ce qui doit être changé pour que l'API Google Voice d'aaronpk fonctionne sur XAMPP

1

Il semble que Google vient de changer la sortie HTML pour https://accounts.google.com/ServiceLogin cela casse l'API d'aaronpk. J'ai observé le changement après le 8 décembre 2015.

Le vieux HTML: <input name="GALX" type="hidden" value="SecureTokenHere">

Le nouveau HTML: <input type="hidden" name="GALX" value="SecureTokenHere">

Donc, si vous avez l'erreur Could not parse for GALX token, simplement mettre à jour votre RegEx de: /name="GALX"\s*type="hidden"\s*value="([^"]+)"/-/type="hidden"\s*name="GALX"\s*value="([^"]+)"/, ou pour la compatibilité, vérifiez la nouvelle façon si l'ancienne façon ne trouve pas de correspondance.

+0

Créé un [PR] (https://github.com/aaronpk/Google-Voice-PHP-API/pull/21) pour aaronpk. – QuickDanger