проблемы cURL с "API" Google Voice, работающими в XAMPP / Windows 7 - PullRequest
1 голос
/ 16 ноября 2010

Я использую aaronpk Google Voice API для отправки и получения SMS-сообщений в Google Voice.Я раскомментировал строку "extension = php_curl.dll" в php.ini и подтвердил, что cURL работает.Я застрял в этой точке, и я продолжаю получать эту ошибку:

Uncaught исключение «Исключение» с сообщением «Не удалось проанализировать для токена GALX»

I 'мы проверили все основные вещи.Имя пользователя и пароль в учетной записи верны.Единственное, что я вижу, это то, что cURL не пишет файлы cookie.

Я знаю, что по умолчанию в скрипте есть путь Linux для cookiejar / cookiefile.Я попытался изменить это на каталог Windows, а также включить полный путь.Фрагмент кода, который я сейчас использую:

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

Даже с этой модификацией кода скрипт не записывает данные в файл cookies.txt.

Я загрузил эти скрипты вхост Linux и они прекрасно работают, доказывая мне, что это проблема Windows.К сожалению, у нас нет сервера Linux для производственной среды.

Я ищу какое-либо руководство, чтобы это работало в Windows.Сейчас я занимаюсь разработкой на машине с Windows 7 под управлением XAMPP.Производственной средой, скорее всего, будет Windows 2008 Server.

Любая помощь будет принята с благодарностью!

Ответы [ 2 ]

1 голос
/ 10 декабря 2015

Похоже, что Google только что изменил выходной HTML для https://accounts.google.com/ServiceLogin таким образом, что нарушает API aaronpk.Я заметил это изменение после 8 декабря 2015 года.

Старый HTML: <input name="GALX" type="hidden" value="SecureTokenHere">

Новый HTML: <input type="hidden" name="GALX" value="SecureTokenHere">

Так что, если у вас есть Could not parse for GALX token ошибка, просто обновите свой RegEx с: /name="GALX"\s*type="hidden"\s*value="([^"]+)"/ до /type="hidden"\s*name="GALX"\s*value="([^"]+)"/, или для совместимости проверьте новый способ, если старый способ не находит соответствия.

1 голос
/ 19 августа 2011

Я знаю, что это довольно старый ... но все же приятно поделиться ответом, да?

Изменение пути файла cookie - это хорошо, но проблема здесь в том, что cURL пытается (и не может) проверить SSL-сертификат Google. Два решения можно найти здесь (я нашел эту ссылку в принятом ответе на этот другой вопрос SO )

В целях тестирования я думаю, что было бы неплохо использовать быстрое и грязное решение (слепое принятие всех SSL-сертификатов без проверки). Вы вставили бы следующую строку в конструктор класса GoogleVoice вместе с другими строками curl_setopt

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

Для производственного кода я бы проверил сертификат. Поиск и сохранение сертификата описаны в первой ссылке, которую я предоставил. Предполагая, что сертификат находится в том же каталоге, что и GoogleVoice.php, вы должны вставить следующие строки

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');

Я не эксперт по cURL, поэтому не могу сказать, есть ли другой способ проверки SSL-сертификата (или почему он не нужен на хосте Linux). Это должно быть все, что нужно изменить, чтобы получить Google Voice API aaronpk работает на XAMPP

...