Google Simple API key stopped working

2020-06-17 04:52发布

问题:

I'm using Python/Twisted to do asynchronous HTTP calls to the Google+ API. Our client app passes over the user's access_token and we do an API call to...

https://www.googleapis.com/plus/v1/people/me/?%s&key=%s&

... where %s and %s are being filled with a valid access_token and (supposedly) valid Simple API Key, respectively.

Everything was working beautifully yesterday. Today I continued to work on the unit tests for this when the API suddenly started returning:

{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "keyInvalid",
    "message": "Bad Request"
   }
  ],
  "code": 400,
  "message": "Bad Request"
 }
}

usageLimits, keyInvalid... Okay, I get it. I've seemingly hit the usage limits and they have invalidated API keys coming from this account. Except, I haven't...

The "Courtesy Limit" is supposed to be "10,000 requests/day", yet I've only made a couple hundred calls (according to Google's own usage graphs), and I am still seeing "0% used" on the quotas tab.

I would have brought this to Google directly, but they seem to have dropped their Developers Google Group in favor of a Google+ discussion that doesn't actually receive any responses.

Any help or guidance is extremely appreciated. Thanks!

回答1:

Just so we are clear, you are using your key from your Google API Console page? On there you should see a tab for "API Access" near the top left hand corner of the page. Make sure that the API Key you are using is your Key for browser apps (with referers) Key, otherwise it won't work.

At any rate, an API Call for me looks like this:

https://www.googleapis.com/plus/v1/people/114789529333378876576?key=ENTER_YOUR_KEY_HERE

You should be able to make at least one API Call per day without a valid Key.



回答2:

The answer was quite simple! You can't send both the access_token and the key in the same API call. If you use the access_token you're authenticating the API call as the user, if you use your projects Simple API Key you're authenticating as yourself. If you use both, the call fails.



回答3:

This took me quite a long time to figure out, so hope to save some time to someone else :)

Take a look at thi spost, by google staff (in 2012..) https://groups.google.com/forum/#!topic/google-ajax-search-api/HuKhXfsoMQc

Sorry for the delayed response. This error (which we're working on improving the descriptiveness of) also occurs when you have a restriction on your key (e.g. locked to a specific referer or IP address). Please confirm that if you've set such a restriction in the APIs Console, that the referer or IP address that you're making the requests from. Pay special attention to any wildcards used on the referer - for instance, if you use *.abc.com, it won't work if your request comes from "yoururl".

also would have been great if google team fixed this issue! :)



回答4:

In my case I had a parameter named Key, so it thought that was an actual key, just renamed the parameter.



回答5:

In my case - I just had to wait few minutes because it was short time after updating my API KEY. Whenever you create a new key or update it on YT developer console. YT has up to 15 mins to make all the changes on their side