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:
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 nohttpobject is passed), falls back to the
| default inferred from the environment.
...
| Methods defined here:
|
| __init__(self, target_language='en', credentials=None, http=None)
@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.