Generate authentication tokens for Google api requests.
See Using OAuth 2.0 for Server to Server Applications for a description of the procedure.
To obtain a token, some tasks need to be done:
- Access to the Google console.
- Access to (create) a Google service account.
- Rights to create a key for that service account.
- Access to the json key file (can be downloaded during the service account key generation).
- Select the needed api usage from this Website. More than one usage can be used by seperating them with commas. An empty usage results in an error.
This json file is important and necessary to use this crate. See in Examples/Usage its usage.
Each token request has a lifetime. This lifetime need to be provided as param in seconds. Allowed are values between 30 to 3600.
The next updates take care of the following:
- Improved error messages
- Detect error returns
- Usage Enum Types
- Token-Buffer (for now: every token generation results in a rest request)
...
let config = AuthConfig::build( //<-- Config can be reused
fs::read_to_string("service_account.json").unwrap(), //<-- JSON as string
&Usage::CloudVision, //<-- Api-Usage
).unwrap();
let token = config.generate_auth_token(3600).await.unwrap(); //<-- Generate token
println!("{}", token);
...
This chapter should help to determine who/which causes the problem and how to fix it:
LibError | Type | Solution (not guaranteed) |
---|---|---|
AuthenticationError | invalid_grant | Your service-client.json is no longer valid as the key got deleted in the google console. Replace this file with a new one by generating a new key. |
This table is WIP and will change if new errors occur or someone requests a related issue.