给定API密钥时,Google Map Geocode API会返回REQUEST_DENIED

时间:2015-12-17 13:24:35

标签: php api google-maps google-maps-api-3 google-geocoding-api

当我删除API密钥部分时,它可以正常工作

$details_url = "http://maps.googleapis.com/maps/api/geocode/json?address=" . $string."&sensor=false";

添加api密钥时,会显示REQUEST_DENIED。

$apiKey = 'AIzaSyCy2C82dDZlHkwGZ_fCfgh5gBdo50Q8cE0';
$string = str_replace(" ", "+", urlencode($string));
$details_url = "http://maps.googleapis.com/maps/api/geocode/json?address=" . $string."&sensor=false&key=".$apiKey;
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $details_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = json_decode(curl_exec($ch), true);

这是我第一次使用地理编码API并且我需要基于API密钥工作,因为一旦我们每天找不到足够的2500个查询,我们将按计划购买付费。 (谷歌地图的商业)

我创建的API密钥是控制台面板上的新服务器密钥。

我在做什么不接受我的api密钥?然而,当我添加API密钥并通过浏览器尝试时它工作正常如下,我可以在谷歌控制台上看到使用情况报告和使用配额。

https://maps.googleapis.com/maps/api/geocode/json?address=2140+Amphitheatre+Parkway,+Mountain+View,+IN&key=AIzaSyCUDSJ2GBE1DHupbAZT4u8gZqclkIhmb0M

1 个答案:

答案 0 :(得分:1)

api请求必须通过https发送才能开始,然后您会发现该密钥已过期。

$string = 'Dundee, Scotland';
$apiKey = 'AIzaSyCy2C82dDZlHkwGZ_fCfgh5gBdo50Q8cE0';
$string = str_replace( " ", "+", urlencode( $string ) );
$url = "https://maps.googleapis.com/maps/api/geocode/json?address=" . $string."&sensor=false&key=".$apiKey;

$cacert='c:/wwwroot/cacert.pem';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($ch, CURLOPT_CAINFO, realpath( $cacert ) );
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,true );
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,2 );

$response = json_decode( curl_exec( $ch ), true );
$info = curl_getinfo( $ch );
curl_close( $ch );


echo '<pre>', print_r($info,1), PHP_EOL, print_r( $response, 1 ), '</pre>';