1
votes

I am trying to use Google Cloud Vision via a rest http request using c#. As described here, I tried to authenticate with the api key as a parameter:

string uri = "https://vision.googleapis.com/v1/images:annotate?key=" + API_KEY;
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, uri);
[...]
response = await client.SendAsync(request);

However, I always get a 403 PERMISSION DENIED Code:

Cloud Vision API has not been used in project XXXXX before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/vision.googleapis.com/overview?project=XXXXXXX then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.

Of course I checked, The API is activated, enabled and there are no API restrictions: API Key: No restrictions

Since there seemed to exist some problems with that authentication method, especially with cloud vision, I tried authentication via an access token of a service account that I created. I gave the service account full access just to be sure that there is no issue with the rights of the service account:

string uri = "https://vision.googleapis.com/v1/images:annotate";
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, uri);
request.Headers.Add("Authorization", "Bearer " + ACCESS_TOKEN);
response = await client.SendAsync(request);

Still, same error message. Same goes with curl:

curl -k -X POST -H "Content-Type:application/json" 
-d "@{REQUEST_AS_JSON_OR_PATH_TO_JSON-FILE}" 
https://vision.googleapis.com/v1/images:annotate?key={API_KEY}

What am I missing out?

1

1 Answers

3
votes

Turned out it is NOT sufficient to activate an API key (even when its without any restrictions), but one needs to actively go to the Google console menu -> APIs and Services -> Library -> Search for "Cloud Vision" -> klick on the Cloud vision API and activate it. It takes a couple of minutes. The status of this is not shown in your dashboard.

Then, you can simply authenticate with the api key as URL parameter.