2012-03-28 268 views
0

我不確定這是否曾被問過,但我必須做一個簡單的播放應用程序,它使用Google Places API中的一些數據。PlayFramework請求Google Places API

我發現,這樣請求:

https://maps.googleapis.com/maps/api/place/search/json?location=46.5882,-95.4075&radius=50000&types=lodging&sensor=false&key=[your_api_key]

從瀏覽器中完美地工作,但不是從遊戲! (它返回REQUEST_DENIED):

parameters.put("location", cityFound.latitude+","+cityFound.longitude); 
     parameters.put("radius", "50000"); 
     parameters.put("types", "lodging"); 
     parameters.put("sensor", "true"); 
     parameters.put("key", "GOOGLE_PLACES_KEY"); 
     WSRequest wsRequest = WS.url("https://maps.googleapis.com/maps/api/place/search/json").setParameters(parameters); 

有些頭疼,我發現在瀏覽器中,如果我嘗試做一個http請求,而不是上述https它給REQUEST_DENIED後。

所以我懷疑從Play我不能這樣做https請求沒有SSL證書?

而且,是不是難看支付數百$的SSL證書,只是這樣的事情(或者你知道任何免費的解決方案,其很容易在遊戲中實現?)

回答

1

您不必購買證書。您必須確保服務器發送的證書將被您的應用程序接受。

但更重要的是檢查應用程序日誌中的任何異常或錯誤消息。您的應用程序是否真的回退到http,您是否已定義使用https?你使用了正確的Google API密鑰嗎?

0

你也許可以導出證書,即googleapis提供給您的瀏覽器。在Firefox中,您可以從選項 - >高級 - >加密 - >查看證書。

1

問題已解決。

這是不可思議的錯誤是如何發生的。

parameters.put("key", "GOOGLE_PLACES_KEY"); 

它應該是:

parameters.put("key", GOOGLE_PLACES_KEY); 

,因爲它定義的常量。

+2

我已經告訴過你了;) – magomi 2012-03-28 17:02:19