我正在使用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。
非常感谢任何帮助!
答案 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="([^"]+)"/
,或者为了兼容性,如果找不到旧路,请检查新方法一场比赛。