当我删除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
答案 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>';