cURL与在XAMPP / Windows 7上运行的Google Voice“API”有关

时间:2010-11-16 00:59:12

标签: php windows curl xampp google-voice

我正在使用aaronpk的Google Voice APIs在Google语音中发送和接收短信。我已经取消注释php.ini中的“extension = php_curl.dll”行,并确认cURL正在运行。我现在陷入困境,我一直收到这个错误:

  

未捕获的异常'异常'   消息'无法解析GALX   令牌'

我检查了所有基本的东西。帐户上的用户名和密码是正确的。我唯一能看到的是cURL没有编写cookie文件。

我知道默认情况下脚本有一个用于cookiejar / cookiefile的Linux路径。我已经尝试将其更改为Windows目录,并包括完整路径。我目前使用的代码段是:

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

即使修改了代码,脚本也不会写入cookies.txt文件。

我已将这些脚本上传到Linux主机,它们工作得很好,向我证明这是一个Windows问题。遗憾的是,我们没有生产环境的Linux服务器。

我正在寻找任何指导,以使其在Windows中运行。现在我正在开发运行XAMPP的Windows 7机器上。生产环境可能是Windows 2008 Server。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

我知道这个人已经老了......但分享答案仍然很好,是吗?

更改cookie文件的路径很好,但问题在于cURL尝试(并且失败)验证谷歌的SSL证书。可以找到两个解决方案here(我在the accepted answer for this other SO question中找到了链接)

出于测试目的,我认为使用快速而肮脏的解决方案是可以的(盲目地接受所有SSL证书而不进行验证)。 您将以下行与其他curl_setopt行

一起插入到GoogleVoice类构造函数中
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主机上不需要它。)这应该是所有需要更改才能获得的aaronpk的Google Voice API正在使用XAMPP

答案 1 :(得分:1)

似乎Google刚刚以打破aaronpk API的方式更改了https://accounts.google.com/ServiceLogin的输出HTML。我在2015年12月8日之后的某个时间观察到了这一变化。

旧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="([^"]+)"/,或者为了兼容性,如果找不到旧路,请检查新方法一场比赛。