Google-cloud-python: Can not use 'my-api-key' on google.cloud.translate API. translate may support OAuth2 now?

Created on 28 Dec 2016  路  6Comments  路  Source: googleapis/google-cloud-python

I'm trying to use translate API with API-Key.
But I got error when I follow instruction on instruction of following:

Translate Doc mentioned how to use it:

Error:

client = translate.Client('my API Key is given')
...
DefaultCredentialsError: Could not automatically determine credentials. Please set GOOGLE_APPLICATION_CREDENTIALS or
explicitly create credential and re-run the application. For more
information, please see
https://developers.google.com/accounts/docs/application-default-credentials.

I just guess , now only OAuth2 is supported by translate API. Because of some information. Should the Doc updates or am I wrong ?

Env:

  • google-cloud-translate (0.22.0)
  • Python 2.7.6 on Ubuntu 14.04
  • pip 9.0.1

Some information:

On Translate Client Document,

And help(translate.Client)

Help on class Client in module google.cloud.translate.client:

class Client(google.cloud.client.Client)
| Client to bundle configuration needed for API requests.
|
...
| :type credentials: :class:oauth2client.client.OAuth2Credentials
| :param credentials: (Optional) The OAuth2 Credentials to use for the
| connection owned by this client. If not passed (and
| if no http object is passed), falls back to the
| default inferred from the environment.
...
| Methods defined here:
|
| __init__(self, target_language='en', credentials=None, http=None)

translation

All 6 comments

@hidehara I'm sorry you ran into trouble with this!
I'll get a PR to update the docs going right now.

Support for the API key was removed via https://github.com/GoogleCloudPlatform/google-cloud-python/pull/2823 and released in 0.22.0.

The prefered way to authenticate is with service accounts. Which we do have docs explaining how to set that up here: https://googlecloudplatform.github.io/google-cloud-python/stable/google-cloud-auth.html.

@daspecster Thanks for nice reply.

I have a question , why API-Key was removed ?
Is that based on Google Cloud Translate life cycle OR just new policy of google-cloud-python ?

If you have any information, please let's me know.

I read #2823 , so I understand that I should use OAuth2 from 0.22.0.

Anytime!

@hidehara, I believe that it was always intended that Translate use Service Accounts.
Only recently was Service Account support added to the upstream Translate service.

@jonparrott or @dhermes would know more about it I'm sure.

@daspecster , Oh, sorry about type of Account.
I succeed to use translate with 'Service Accounts' by using following sytle.

export GOOGLE_APPLICATION_CREDENTIALS="/path/to/keyfile.json"

I confused to use which type of Account , cause of help(translate.Client). But now I'm OK to use Service Account.

If Google will still support API-Key , It's easy & best way for me (;
Thanks for kind information.

@hidehara We elected to drop support for API key auth as a "library decision" but the backend still supports it. The auth doc linked to by @daspecster should have everything needed to authenticate. It's incorrect to say you must use a service account, you can also use OAuth 2.0 based credentials for user accounts. For deployed applications however, we strongly recommend the use of a service account.

The release listed the dropped feature, though maybe this wasn't clear enough?

@dhermes Thanks for above. I'm clear now.

I got background of "library decision" and the backend still supports API Key auth.
I succeed to use a service account, so I may implement with it.

Was this page helpful?
0 / 5 - 0 ratings