Rust API bindings for Google Sign-in.
See authenticating with a backend server.
Put this in your Cargo.toml
:
[dependencies]
google-signin = "0.3.0"
And this in your crate root:
extern crate google_signin;
And then you can verify a google JSON web token
use google_signin;
let mut client = google_signin::Client::new();
client.audiences.push(YOUR_CLIENT_ID); // required
client.hosted_domains.push(YOUR_HOSTED_DOMAIN); // optional
// Let the crate handle everything for you
let id_info = client.verify(&data.token).expect("Expected token to be valid");
println!("Success! Signed-in as {}", id_info.sub);
// Inspect the ID before verifying it
let id_info = client.get_slow_unverified(&data.token).expect("Expected token to exist");
let ok = id_info.verify(&client).is_ok();
println!("Ok: {}, Info: {:?}", ok, id_info);
The verify
function currently uses the
tokeninfo endpoint
which handles most of the validation logic, but introduces some latency.
If you are expecting high volumes of sign-ins:
- Add a reaction to the Handle Certificate and Cache-Control auth flow issue so we know how many people need it.
- OR, Submit a Pull Request for the issue to help out.