2010-11-16 58 views
1

我正在使用aaronpk的Google Voice APIs在Google Voice中發送和接收SMS消息。我已經取消了php.ini中的「extension = php_curl.dll」這一行,並確認cURL正在工作。我現在卡在這一點,我不斷收到此錯誤:XAMPP/Windows 7上運行Google語音「API」的cURL問題

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

我已經檢查了所有基本的東西。帳戶中的用戶名和密碼是正確的。我能看到的唯一的事情就是cURL不會寫入cookie文件。

我知道這個腳本默認有一個用於cookiejar/cookiefile的Linux路徑。我試着將其更改爲Windows目錄,以及包括完整路徑。我目前使用的代碼段爲:

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

即使修改了代碼,腳本也沒​​有寫入cookies.txt文件。

我已經將這些腳本上傳到Linux主機,他們工作得很好,向我證明這是一個Windows問題。可悲的是,我們沒有用於生產環境的Linux服務器。

我正在尋找任何指導,以使其在Windows內工作。現在我正在運行XAMPP的Windows 7機器上開發。生產環境可能是Windows 2008 Server。

任何援助將不勝感激!

回答

1

我知道這是一個很老的......但它仍然很高興分享一個答案,是嗎?

更改cookie文件的路徑是好的,但問題在於cURL嘗試(和失敗)來驗證Google的SSL證書。兩種解決方案可以發現here(我發現the accepted answer for this other SO question該鏈接)

出於測試目的,我會認爲這將是確定使用快速和骯髒的解決方案(盲目地接受所有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'); 

我沒有捲曲的專家,所以如果有另一種方式來驗證SSL證書我不能說(或者爲什麼在Linux主機上不需要)。這應該是所有需要更改以獲取aaronpk的Google Voice API在XAMPP上工作的。

1

Google似乎只是以某種方式更改了輸出HTML https://accounts.google.com/ServiceLogin這打破了aaronpk的API。我在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錯誤,只需更新您的正則表達式從:/name="GALX"\s*type="hidden"\s*value="([^"]+)"//type="hidden"\s*name="GALX"\s*value="([^"]+)"/,或兼容性,檢查新方式,如果舊的方式找不到匹配。

+0

爲aaronpk創建了[PR](https://github.com/aaronpk/Google-Voice-PHP-API/pull/21)。 – QuickDanger 2015-12-09 21:39:27