Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use CORS to implement JavaScript Google Places API request

I really do NOT understand how I'm supposed to make this work:

var requestURL = 'https://maps.googleapis.com/maps/api/place/details/json?placeid=ChIJN1t_tDeuEmsRUsoyG83frY4&key=AIzaSyAW4CQp3KxwYkrHFZERfcGSl--rFce4tNw';  console.log(requestURL);  $.getJSON( requestURL, function( data ) {   // data   console.log(data); }); 

and my HTML file:

  <body>          <script   src="https://code.jquery.com/jquery-2.2.4.min.js"   integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44="   crossorigin="anonymous"></script>         <script src="main.js" charset="utf-8"></script>      </body> 

I always get the No 'Access-Control-Allow-Origin' header is present on the requested resource. message... even though if I go to https://maps.googleapis.com/maps/api/place/details/json?placeid=ChIJN1t_tDeuEmsRUsoyG83frY4&key=AIzaSyAW4CQp3KxwYkrHFZERfcGSl--rFce4tNw in my browser I get the proper JSON returned.

I am lead to believe that CORS can help me here. I don't understand CORS. Please, can anyone help me in plain simple terms? What should I change to make this work??

Thanks

like image 734
Ryan Mc Avatar asked Feb 11 '17 20:02

Ryan Mc


People also ask

How do I access Google API using CORS?

There are two ways to make an authenticated request with CORS: Send the access token in the Authorization request header. Include the access token as the access_token parameter in the URL.

Can you store Google Places API data?

Note that the place ID, used to uniquely identify a place, is exempt from the caching restriction. You can therefore store place ID values indefinitely.


1 Answers

You are trying to use the Google Places API Web Service on client side whereas it is designed for server side applications. That's probably why appropriate CORS response headers are not set by the server.

As explained in the Notes at the beginning of the Place Details documentation, you should use the Places Library in the Google Maps JavaScript API:

If you're building a client-side application, take a look at the Google Places API for Android, the Google Places API for iOS, and the Places Library in the Google Maps JavaScript API.

Note: you will need to enable the Google Maps JavaScript API in your Google Developer Console first.

Here is a way you can proceed to get place details (based on the example from the documentation):

<head>     <script type="text/javascript">         function logPlaceDetails() {           var service = new google.maps.places.PlacesService(document.getElementById('map'));           service.getDetails({             placeId: 'ChIJN1t_tDeuEmsRUsoyG83frY4'           }, function (place, status) {             console.log('Place details:', place);           });         }     </script>     <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=AIzaSyAW4CQp3KxwYkrHFZERfcGSl--rFce4tNw&libraries=places&callback=logPlaceDetails"></script> </head> <body>     <div id="map"></div> </body> 

Google Place details output to the console

like image 130
rd3n Avatar answered Sep 28 '22 05:09

rd3n