8

I'm using the Google Places API which requires that you give a list of IPs which are allowed to use the service. The API works great on my local machine but it give a

This IP, site or mobile application is not authorized to use this API key

when I use it from my production server. I've added the required IPs. Any other ideas what might be the issue or how to debug it?

ip.
  • 3,306
  • 6
  • 32
  • 42
  • Are you sure you gave the correct IPs? Your server IP might not be the IP seen from outside. Just a hint... – MrUpsidown Apr 25 '14 at 14:33
  • Possible duplicate of [This IP, site or mobile application is not authorized to use this API key](https://stackoverflow.com/q/21933247/608639) – jww Nov 11 '18 at 02:07

3 Answers3

28

I had the same issue and I found this.

On the url, it requires the server key in the end and not the api key for the app.

So Basically, you just add the server key in the end of the URL like this:

https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=yourlatitude,yourlongitude&radius=5000&sensor=true&key=SERVERKEY

Now, to obtain the server key, just follow these steps:

1) Go to Developer Console https://code.google.com/apis/console/

2) In the Credentials, under Public API Access , Create New key

3) Select the server key from the option.

4) Enter your IP Address on the field and if you have more ip addresses, you can just add on every single line.NOTE: Enter the IP Address only when you want to use it for your testing purpose. Else leave the IP Address section blank.

5) Once you are done, click create and your new Server Key will be generated and you can then add that server key to your URL.

Last thing is that, instead of putting the sensor=true in the middle of the URL, you can add it in the end like this:

https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=yourlatitude,yourlongitude&radius=5000&key=SERVERKEY&sensor=true

This will definitely solve the issue and just remember to use the server key for places api.

EDIT

I believe the web URL has changed in the past years. You can access developers console from here now - https://console.developers.google.com/apis/dashboard

  • Navigate to developers console - https://console.developers.google.com/ or use the link from details to navigate directly to API dashboard.
  • Under developer console, find Label from the left navigation panel
  • Select project
  • Choose Credentials from the left Navigation panel
  • You could create credentials type from the Top nav bar as required.

Hope this answer will help you and other viewers. Good Luck .. :)

mike20132013
  • 5,357
  • 3
  • 31
  • 41
  • 1
    hello mike20132013 you explained the answer very clear and step by step so in order to complete your answer i would like to add one more step which is some time programmer forget. so when you do all as in the above reply has been mentioned pretty well so then go the APIs under the APIs & auth left side pane of google map console you will see there Google Maps APIs icon press the more button and then press on Google Places API Web Service so there you will enable the api and sure you will enjoy it. –  Jun 15 '15 at 11:52
  • 1
    I am getting `error_message: "The provided API key is expired."` Exception – Rethinavel Dec 03 '15 at 04:58
  • Havent came across that message before but looks like ur key is expired. Try to renew the key on the dashboard and I am pretty sure you can re-generate the API key again for the app/web-app you are working for. – mike20132013 Dec 04 '15 at 15:18
  • Facing the same issue, There is no API Key in Google called server key there is just a simple API key that is generated and I restricted it to Android app with adding my package name and SHA1. But still, it gives an error. Let me know How can I get Server Key ??? I am working on Mobile App for android. – Hardik Vegad Oct 18 '18 at 18:11
  • hello @mike20132013 , can you tell me where to find Public API Access . I can't find it under credentials – Sushree Swagatika Mar 23 '20 at 03:42
  • 1
    @SushreeSwagatika I believe the web URL has changed in past years. You can access developers console from here - https://console.developers.google.com/apis/dashboard and select project and choose credentials from the left panel and then you could create credential as required. – mike20132013 Mar 23 '20 at 07:26
15

You need to enable the following places api

  • Google Places API Web Service

As you are making a http request.

Bartłomiej Semańczyk
  • 59,234
  • 49
  • 233
  • 358
Shvet Chakra
  • 1,043
  • 10
  • 21
0

As a best practice [1] you need to use a separate API key for each application/platform (iOS, Android, server-side, client-side) and set the corresponding application restriction (iOS apps, Android apps, HTTP referrers, IP addresses).

In your case, you need an API key for Android, restricted to your SHA-1 signing-certificate fingerprint. And another API key for the web services requests, restricted to IP addresses.

When using Android devices, setting IP addresses may cause some issues as those devices use dynamic IP addresses that keep changing [2]. To overcome this issue, you will need to set up a proxy server [3] to get a static public IP address that you can use to set IP restrictions.

Let me know if you have any questions. Best Regards, Maria The Google Maps Platform Team

monjan
  • 1
  • 1