1

我正在使用 aaronpk 的Google Voice API在 Google Voice 中发送和接收 SMS 消息。我已取消注释 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。

任何帮助将不胜感激!

4

2 回答 2

1

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

更改 cookie 文件的路径很好,但这里的问题是 cURL 尝试(并且失败)验证 google 的 SSL 证书。可以在此处找到两个解决方案(我在其他 SO 问题的已接受答案中找到了该链接)

出于测试目的,我认为可以使用快速而肮脏的解决方案(盲目地接受所有 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 的谷歌语音所需的全部内容在 XAMPP 上工作的 API

于 2011-08-18T20:27:33.770 回答
1

似乎谷歌刚刚以https://accounts.google.com/ServiceLogin破坏 aaronpk 的 API 的方式更改了输出 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="([^"]+)"/,或者为了兼容性,如果旧方式找不到匹配项,请检查新方式。

于 2015-12-09T21:07:16.667 回答